初探堆叠注入

CTF堆叠注入是怎么回事呢?CTF相信大家都很熟悉,但是CTF堆叠注入是怎么回事呢,下面就让小编带大家一起了解吧。
CTF堆叠注入,其实就是学习堆叠注入,大家可能会很惊讶CTF怎么会堆叠注入呢?但事实就是这样,小编也感到非常惊讶。
这就是关于CTF堆叠注入的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!

老营销号了,今天重刷 BUU 的时候又是碰到了我们的随便注,之前去 V&N 面试的时候师傅们也是对这题非常重视,我们在此搞一搞嗷

定义 & 原理:

从字面意思看就知道是一堆 sql 语句一起执行,As we all konw,在 MySQL 中,主要是在命令行中执行 sql 语句,每条语句后面加 ; 以示语句结束,这样我们就想到在结束一条语句之后继续构造下一条语句,于是就出现了堆叠注入(stacked injection)

而 union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别呢,就在于 union 或者 union all 执行的语句类型有限,可以主要用来执行查询语句,而堆叠语句可以执行任意的语句

局限性:

堆叠注入并不是每一个环境下都可以执行,可能会收到 API 或者数据库引擎不支持的限制,当然权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序

在 web 系统中代码通常只返回一个查询结果,因此,堆叠注入第二个语句产生错误或者结果只能被忽略,我们在前端界面是无法看到返回结果的,因此在读取数据时,最好是使用联合注入

同时,在堆叠注入之前,我们也是需要知道一些数据库的相关信息的,如表名、列名等

数据库实例

MySQL + PHP:

由于水平有限,目前只能研究 MySQL 下的堆叠,嘤嘤嘤 😭

1. 新建一表

select * from users where id=1;create table test like users;

执行成功,并成功新建表

2. 删除刚才新建的表

select * from users where id=1;drop table test;

执行成功,之前创建的 test 被成功删除

3. 查询数据

select * from users where id=1;select 1,2,3;

执行成功,成功查询

4. 加载文件

select * from users where id=1;select load_file('C:/Users/livefordead/Pictures/shit.php');

成功执行,并成功加载文件

5. 修改数据

select * from users where id=1;insert into users(id,username,password) value('100','new','I love Yj');

成功执行,并插入一条新数据

sql-labs 实战

From:堆堆
记得注明出处嗷


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×