sqli-labs Less-32-41

2019-10-19  本文已影响0人  jun123123

Less-29-31三关是waf绕过,但是我pull的镜像里并没有tomcat环境和jsp文件,所以没法继续做,这也客观上导致了我昨天鸽了一天。
大概看了一下wp,是通过tomcat和apache(nginx)对参数解析不同进行注入,三关都是一样的做法,只是单字符/双字符/括号的不同,这里先跳过,最后有空再写吧(必鸽)

如果程序的默认字符集是GBK等宽字节字符集,就有可能产生宽字节注入,绕过上述过滤。
若在 PHP 中使用mysql_query("set names gbk")将默认字符集设为GBK,而使用addslashes()转义用户输入,这时如果用户输入%bb%27,则addslashes()会在%27前面加上一个%5c字符,即转义字符\。
而 MySQL 在使用GBK编码时,会认为两个字符为一个汉字,%bb%5c是一个宽字符(前一个 ASCII 码大于 128 才能到汉字的范围),也就是籠,也就是说%bb%5c%27=籠',这样单引号就未被转义能闭合语句,从而产生 SQL 注入。%bb并不是唯一一个可以产生宽字节注入的字符,理论上%81-%FE均可。

构造payload:

?id=0 %ed' union select 1,group_concat(username),group_concat(password) from users%23
1.png

注入成功

addslashes(string)函数返回在预定义字符之前添加\的字符串:

该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。

注意:默认地,PHP对所有的GET、POST和COOKIE数据自动运行addslashes()。所以不应对已转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc()进行检测。

stripslashes(string)函数删除由addslashes()函数添加的反斜杠。
其他完全同Less-33

?id=0 union select 1,group_concat(username),group_concat(password) from users %23

即可注入成功(懒得截图了)

?id=0%ed%27 union select 1,group_concat(username),group_concat(password) from users %23

注入成功

上一篇 下一篇

猜你喜欢

热点阅读