Easy MD5
打开页面显示一个提交查询按钮,随便输入判断可以进行SQL注入,尝试输入1‘ or 1=1 ,1’ or 1=2 发现没效果
用burp抓包一下,得到响应,发现里面有一个 select * from ‘admin’ where password=md5($pass,true)
查询百度可知当md5($pass,true)为真的时候,可以执行select *,输入$pass时,首先会被md5加密,然后会被转换成16字符的二进制格式。
百度知道存在md5函数漏洞,ffifdyop字符串可以造成漏洞:
解析后的表达式为
select * from 'admin' where password=''or'6]!r,b'
即
select * from 'admin' where password=''or' 1
检查源代码发现可以使用GET提交数据
这里要使用GET提交方法提交两个变量a,b,a和b不相等,但MD5加密的值要相等
使用MD5数组绕过
原理:md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
输入?a[]=1&b[]=2,得到一段php代码
这里要使用POST提交方式提交两个变量,依旧使用MD5数组绕过得到flag