自建环境_二次注入测试

整理思路

在注册用户这一步会将信息进行一步转义处理,导致没法直接在注册的时候进行注入,但是他会将还原后的数据插入到数据库中,然后就可以尝试在修改密码这一步进行利用

Pasted image 20240802151421.png
在这里addslashes()函数就是对原本数据进行转义

Pasted image 20240802151820.png
这里是在修改密码的时候进行的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)#

Pasted image 20240802152725.png

可以看到确实能注入
Pasted image 20240802152820.png

总结

这个环境其实太简陋了,正常情况下对用户名和密码什么要求还是挺高的,比如限制长度字符什么的,但是这个环境也能很好体现二次注入的思想了

对于这种,其实防护也很简单,对输入一视同仁,无论输入来自用户还是存储,在进入到 SQL 查询前都对其进行过滤、转义。