目录
1.概述
2. 原则
1、概述
二次注入是指存储的用户输入(数据库、文件)被读取并重新输入到SQL 查询语句中而引起的注入。
二次注入是一种比普通SQL注入更难利用、利用门槛更高的SQL注入。常规注入将数据直接输入到SQL 查询中,而二次注入则处理输入数据、存储数据、检索数据,然后再次将其输入到SQL 查询中。
2、原理
二次注入的原理是在第一次向数据库插入数据时,使用addslashes、get_magic_quotes_gpc、mysql_escape_string、mysql_real_escape_string等函数对特殊字符进行转义。然而,addslashes 的一个特性是参数被转义。添加\’\\\’进行转义,但是\’\\\’不会插入到数据库中,写入数据库时会保留原始数据。将数据存储在数据库中后,开发人员确定该数据是可信的。下次需要查询时,直接从数据库中取出脏数据,不做进一步的检查或处理,造成二次SQL注入。
例如,第一次插入数据时,数据包含单引号,直接插入数据库。然后在下次使用时,在粘合过程中会形成二次注塑。
宽字节注入是指当MySQL数据库使用宽字节(GBK)编码时,认为两个字符都是汉字(要达到汉字的范围,前面的ASCII码必须大于128(例如%df) ),如果输入单引号,mysql 会调用转义函数将单引号更改为\\\’。 \\的十六进制值为%5c,在mysql的GBK编码中为%df%5c,因此单引号被关闭(转义)并插入到攻击中。
示例:http://127.0.0.1/index.php?id=1 %df\’ 4 order — \’
#以上二次注入相关内容来自网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91228.html