您好,欢迎来到码863代码分享网! 请[登录] / [注册]

addslashes后还能不能注入?addslashes不能防止注入,用pdo与mysqli才能防止注入

编辑

https://bbs.ichunqiu.com/thread-10899-1-1.html  

http://www.91ri.org/8611.html   这两篇解释绕过addslashes注入原理

以下原创

绕过addslashes注入原理,使用GBK编码的时候,会认为两个字符(前一个ascii码要大于128,%80以上的)是一个汉字 

gbk编码下php5.6.9版本及以下,输入%89%27(%89') $id=addslashes($_GET['id'])会生成字符串: 1噂',因为%89加\(%5c)会合成噂字,闭合单引号,后面可接任何sql


输入id 1%89'and 1;%23  完整url test.net/index.php?id=1%89%27and%201;%23  注入成功(%23为#url下认为是锚,所以用%23)

$id = isset($_GET['id']) ? addslashes($_GET['id']) : 1;

$sql = "SELECT * FROM news WHERE tid='{$id}'";

$sql字符串变成 


SELECT * FROM news WHERE tid='1噂'and 1;#'


http://blog.csdn.net/hornedreaper1988/article/details/43520257 这篇有最下面有解决方法


结论:php7及以上(gbk下不会把\合成没),utf8编码不能注入(UTF8编码不能绕过单引号转义进行注入)。


其它参考 

https://www.cnblogs.com/lcamry/articles/5625276.html

http://www.redicecn.com/html/PHP/20101203/198.html

http://blog.csdn.net/c465869935/article/details/54407084 这篇重要  编码安全问题

CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网 湘ICP备2023018646号-1
MYSQl共执行 3 个查询,用时 0.066286087036133 秒,PHP脚本用时 0.069048 秒,占用内存 0.507 MB,Gzip 已启用