![](https://img-blog.csdnimg.cn/img_convert/11a59e99bf2c672121d60403311eed48.png)
尝试1'注入,没反应.然后burp抓包
![](https://img-blog.csdnimg.cn/img_convert/053f7fad708d61c85df6bfb7ff8c1ed8.png)
发现相应的headers中的Hint
Hint: select * from 'admin' where password=md5($pass,true)
md5函数第二个参数有说法:
![](https://img-blog.csdnimg.cn/img_convert/66e3d16376657e63a8184f12bb4cb81b.png)
![](https://img-blog.csdnimg.cn/img_convert/c4fefc8964d47c95969e6f1b179cf9b7.png)
二进制格式输出会出现乱码,如果乱码为 'or'
比如:ffifdyop经过md5加密后为:276f722736c95d99e921722cf9ed621c
再转换为字符串:'or’6<乱码>
select * from 'admin' where password=''or’6<乱码>'
条件永真
输入ffifdyop后跳转至:
![](https://img-blog.csdnimg.cn/img_convert/0b5ed7715d95e75cd17af0c9e809e1ad.png)
查看源代码
![](https://img-blog.csdnimg.cn/img_convert/8fd2e8bc4139f2841d12320f437ac20f.png)
md5相等绕过
1.0E
因为处理hash字符串时,PHP会将每一个以 0E开头的哈希值解释为0,那么只要传入的不同字符串经过哈希以后是以 0E开头的,那么PHP会认为它们相同 (== 的结果为 True,但 === 的结果为 False)
2.数组绕过
在 PHP5 和 PHP7 中,当两个 md5 进行比较时,若参数是不同的数组,那么 == 和 === 比较的结果均为 True
3.md5碰撞
参考链接:https://www.cnblogs.com/ainsliaea/p/15126218.html
采用数组绕过:
![](https://img-blog.csdnimg.cn/img_convert/b5ee22baccce532c3e490fc459ed69c9.png)
跳转至:
![](https://img-blog.csdnimg.cn/img_convert/011b646b5fbae64f3b8a3f81288ba094.png)
采用数组绕过:
![](https://img-blog.csdnimg.cn/img_convert/0f0a6451c79aa1377b89ea20caf77493.png)
![](https://img-blog.csdnimg.cn/img_convert/22b58b06d0cf21e7b0dacc71de248c74.png)