提示
- 万能密码的md5形式转变
- MD5函数的各种性质
这里拿到题目什么都没有只有一个提交框
信息收集
- 源代码查看
- 抓包查看
- 目录扫描
- sqlmap尝试跑
- 查看框架
这题只需要抓包查看有提示
这里就涉及到MD5以及mysql的性质问题
- 看到这种sql语句第一项到的就应该是万能密码or1=1或者or2=2之类的
- 一串特定的代码(ffifdyod)被md5加密以后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位ascii解释刚好是 ' or '6
- Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 1select * from 'admin' where password= '' or '6xxxxx' ,类似于or1=1这种万能密码
输入后会跳转到另一个界面
查看源代码
这里我所知道的有两种方法
- 数组绕过:a[]=1&b[]=2 这里把a和b变成数组了a不等于b,但是md5加密后会报错为null但是报错以后反而还相等了
- 弱等于0e开头绕过:a=240610708&b=QNKCDZO,这样也符合了a和b不相等,当加md5加密以后他们都是0e开头,并且使用的是弱等于'==',所以相等(在php中’===‘是绝对等于,意思就是两边必须完全相等,但是‘==’就相反,反而只用开头相等就行,例如12456==12789或者123456==123)
这些md加密后都是0e开头,网上随便都能搜到的
到第三关
像这一关也可以用数组绕过
除非当数据传入的时候进行了将它变成字符串
比如md5(strval($_POST['param1']))===md5(strval($_POST['param2']))
payload: param1[]=1¶m2[]=2