自建环境_二次注入测试
整理思路
在注册用户这一步会将信息进行一步转义处理,导致没法直接在注册的时候进行注入,但是他会将还原后的数据插入到数据库中,然后就可以尝试在修改密码这一步进行利用
在这里addslashes()
函数就是对原本数据进行转义
这里是在修改密码的时候进行的SQL处理,可以利用报错注入
简单注入测试
我们想要他执行下面这个语句
SELECT * FROM users WHERE username = 'admin' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#
也就是需要将用户名构造为
admin' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)#
可以看到确实能注入
总结
这个环境其实太简陋了,正常情况下对用户名和密码什么要求还是挺高的,比如限制长度字符什么的,但是这个环境也能很好体现二次注入的思想了
对于这种,其实防护也很简单,对输入一视同仁,无论输入来自用户还是存储,在进入到 SQL 查询前都对其进行过滤、转义。