pikachu靶场-Sql Inject(SQL注入)-宽字节注入 – 作者:知非知非知非

1627258719_60fdff5f703902736db93.png!small

1627258724_60fdff6413a66a689e1a7.png!small

1627258730_60fdff6a128954906d41f.png!small

大量的小知识:

GBK 占用两字节

ASCII占用一字节

PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。

1627258741_60fdff754ef14a16b0b85.png!small

%df’ :会被PHP当中的addslashes函数转义为“%df\’” ,“\”既URL里的“%5C”,那么也就是说,“%df’”会被转成“%df%5c%27”倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%df%5c%27”是一个宽字符。也就是“縗’”

注意:%df%5c表示縗,上面这个汉字后面还有一个单引号。

注意:addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。即上文中的%df’转义为%df\’

预定义字符是:

1)、单引号(’)

2)、双引号(”)

3)、反斜杠(\)

4)、NULL

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

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

EQ:

<!DOCTYPE html>

<html>

<body>

<?php

$str = “Who’s Peter Griffin?”;

echo $str . ” This is not safe in a database query.<br>”;

echo addslashes($str) . ” This is safe in a database query.”;

?>

</body>

</html>

1627258750_60fdff7ef1f346131c25f.png!small

好的,尝试构造PAYLOAD!!!

kobe%df’ or 1=1#

感觉我构造的没有问题啊?

1627258757_60fdff8538ea77dc0dce2.png!small

BURP抓包试一下!!!!

成功!!!我怀疑是前端有转义或者过滤!!!!

1627258763_60fdff8b457df09f5c0e7.png!small

1627258769_60fdff91da225484b9cbf.png!small

接下来,咱们查看一下源代码!!!!

确实有过滤,而且mysql_query还不打印错误描述!!

1627258777_60fdff99ce6bf36a1f14d.png!small

所以,咱么接着注入!正常输入时回显是两个!!

1627258783_60fdff9f863c2b6d8e491.png!small

1627258790_60fdffa608163186fd98d.png!small

1627258795_60fdffabd514c9a59e4ed.png!small

1627258800_60fdffb0ed01554de2175.png!small

1627258806_60fdffb6e3c6aeb35077b.png!small

1627258811_60fdffbbc8c9691e05de8.png!small

注意的点:kobe%df’ 真实对应的值是 kobe縗‘,所以输出的是你的username不存在,请重新输入。

来源:freebuf.com 2021-07-26 08:21:07 by: 知非知非知非

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论