- 使用bp进行抓包,发现有sql注入,
select * from 'admin' where password=md5($pass,true)
①ffifdyop,这个点的原理是 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ‘ or ‘6,而 Mysql 刚好又会吧 hex 转成 ascii 解释,因此拼接之后的形式是
②ffifdyop,该字符串md5加密后若raw参数为True时会返回 'or'6<trash> (<trash>其实就是一些乱码和不可见字符,这里只要第一位是非零数字即可被判定为True,后面的<trash>会在MySQL将其转换成整型比较时丢掉)
- 查看源码
==绕过MD5弱类型比较。正经做的话,直接可以利用数组来绕过,构造 ?a[]=1&b[]=2 即可,由于 md5 函数哈希数组会返回 NULL,因此只要传两个不同的数组即可绕过限制。
- 观察源码,发现是===绕过,强等于,换成了POST传参,同上即可