仅仅是个人刷题记录,有问题欢迎友好讨论
1、数组绕过
md5()在php中无法处理数组,会将数组转化为null
2、特定的md5加密语句
ffifdyop\276f722736c95d99e921722cf9ed621通过md5加密后的数字串会被sql用ascii解释变成包含’ ’ or ’ '的语句
3、解题过程
页面有一个输入什么都没有反馈的输入框,通过网络响应头可以看到有一个hint
也就是说password会经过这样的一个md5()函数,再赋值给password。我们可以通过特殊字符组合通过md5函数后拼接变成一个永真,形如
select * from 'admin' where password='' or true
而ffifdyop\276f722736c95d99e921722cf9ed621可以做到
接着我们进入另一个页面,没有输入框,通过检查源代码我们可以发现一个php代码审计
通过md5无法处理数组,结果将为null的特性,构造
?a[]=1&b[]=2
绕过,达到第三个页面
处理方式和第二个页面一样
构造
?param1[]=1¶m2[]=2
但是默认发送的是GET请求,这里需要转化为POST请求。用firefox的maxhackbar将请求转化为POST就好了。用burp直接改也许可以,但是我没用去试。关于maxhackbar参考我之前的博客
最后成功拿到flag