01 二次注入原理
二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。
二次注入,可以概括为以下两步:
-
第一步:插入恶意数据
进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。 -
第二步:引用恶意数据
开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。
配合下图可以有更好的理解:
02 二次注入方法
这里我们使用sqli-labs/Less24为例,进行二次注入方法的练习。
打开页面可以看到一个登陆界面,尝试用admin'#
进行注入,失败。
部分源代码如下:
作者:Ackerzy
链接:https://www.jianshu.com/p/3fe7904683ac
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。