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

原文地址:https://www.cnblogs.com/love0017/p/15553103.html