[BJDCTF2020]Easy MD5
原理
- 抓包看源码
- select * from 'admin' where password=md5($pass,true)的绕过
- md5==的弱比较问题
- md5===的弱比较问题
解题过程
进入靶场看到输入框,随便输几个传递参数:leveldo4.php?password=xx。但是怎么输都没有反应,页面原代码也没有提示,抓一下包看看
发现有提示,好隐秘- -差点看漏了
也就是说我们要绕过select * from 'admin' where password=md5($pass,true),将pass加密成MD5值,如何能让这个语句执行呢?
有个知识点: 当参数为ffifdyop时,会返回’or’6�]��!r,��b,相当于select * from ‘admin’ where password=‘’or1构成万能密码。
payload:?password=ffifdyop
发现网站跳转到了levels91.php
页面没什么,查看页面源码,露出了后台源码
这个就是md5的弱比较问题
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a用科学计数法0e绕过
又或者数组绕过,md5不接受数组类型
发现又跳转到了levell14.php,好麻烦- -这是好像是MD5的强比较问题
用数组绕过拿到flag
参考文章:https://blog.csdn.net/m0_64236521/article/details/128877434