Less 34
基于错误_POST_单引号_字符型_addslashes()_宽字节注入
时隔多天终于又看到了 POST 亲切的界面。
这关有几种注入方式,《注入天书》中介绍因 POST 不能进行 URLencode,可使用 UTF-8 转 UTF-16 或 UTF-32,实践中发现正常的宽字节注入仍有效,猜测是编码的问题,待解决。
一个参考:Unicode令人混淆的概念,编码这种东西应该要系统地学习。
0x01. 宽字节注入
宽字节注入和 GET 中并无差别,原理在 Less 32 中已详细介绍,使用%bb%27
或%bb%5c%5c%27
代替'
均可,在这里同样可以平级越权:
uname=%bb' or 1 limit 1,1#&passwd=1
通过修改偏移limit
可以平级越权得到其他账号的回显信息。
这里的符号也可以换成 URL 编码:#
=%23
,'
=%27
,(空格)
=%20
=+
等。
已经绕过了addslashes()
的过滤,确定了单引号闭合且无其他过滤,剩下的同 POST 最基本注入,可见 Less 11。
0x02. 编码转换注入
《注入天书》中,介绍了将 UTF-8 的'
转换为 UTF-16 的�'
实现注入的方法。这个字符我也不知道是什么。
在Unicode和UTF编码转换网站上的转换结果:
直接复制进 Burp:
注意:这里的or 1
是or 1=1
的简化写法,只要是永真条件均可,同样的还有or true
、or 2>1
等。
0x03. POST盲注
本关有正确回显和错误回显,且除了addslashes()
无任何过滤,无论是 Bool 还是 Time 盲注都可以做到,参考前面的 POST 盲注脚本。
Less 37
基于错误_POST_单引号_字符型_mysql-real-escape-string()_宽字节注入
在 Less 36 中已介绍了mysql_real_escape_string()
这个函数的原理,可以知道mysql_real_escape_string()
和addslashes()
的注入方式是一样的。
至此,Page 2 的过滤绕过部分已经完成,如果你跟到这里,恭喜你跟着我在这个门里走了两步了【笑。
网友评论