1.1 堆叠注入原理
堆叠注入(Stacked Injection)是一种SQL注入技术,它允许攻击者一次性执行多条SQL语句。其原理主要是利用Web应用程序中的输入验证不严格,通过在输入字段中插入分号(;)来分隔并构造新的SQL语句,从而实现在原本的SQL语句之后执行额外的恶意操作。
1.2 堆叠注入靶场
http://192.168.1.24/sqli-labs/Less-38/
1.3 堆叠注入方式
例如插入一条数据在users字段中,两条不同sql语句用分号隔开
?id=1';insert into users(username,password)values('ikun','jinitaimei')--+
数据插入后页面没有回显,通过查询查看
?id=-1' union select 1,group_concat(username,0x3a,password,0x3C,0x68,0x72,0x2F,0x3E),3 from users--+
2.1二次注入原理
二次注入:二次注入是存储型注入,可以理解为构造恶意数据存储在数据库后,恶意数据被读取并进入到了SQL查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。简言之就是将脏数据进行简单过滤后开发者就认为该数据可信便存入数据库中,当下一次调用该数据时,该数据就会拼接到其他查询语句中造成注入。
2.2 二次注入的靶场
http://192.168.1.24/sqli-labs/Less-24/new_user.php
2.3 二次注入方式
首先注册一个新的账号
然后登录该账号
登录之后,修改密码,该修改密码功能的语句变为
UPDATE users SET passwd="New_Pass" WHERE users='admin'
这时候我们就是在进行越权改变管理员的密码,从数据库中抽出我们注册的新账户,用该账户越权修改管理员的密码
将密码改为1234,然后用管理员的账户,登录密码1234