靶场练习2
最开始是包含了一个php文件执行前面的逻辑,然后定义一个变量执行里面的代码,判断get请求中是否有FILENAME参数,有的话变量FILEAME就被get到的东西赋值,并且执行接收到的东西。
这题的思路应该是命令执行或者是过滤器读取。
直接命令写进去。他执行不了,可能是过滤了,那就试试伪协议。
为什么伪协议也不行,去看答案。
妈的,一用bp就给我拦截,原来最终就是do not hack,很明显的过滤。
话说别人Wp是用的什么工具让我查查。
原来如此,他是拿到黑客的PHP文件,然后看里面的源码的逻辑,然后搞的过滤器,但有点点多此一举。
但其实我一直都不知道他们是怎么知道flag点php的
这是一份靶场中绕过Web防护读取文件的解题逻辑,核心是通过模糊测试枚举可用过滤器 + 利用编码转换绕过关键词拦截,步骤如下:
1. 初始尝试与拦截
尝试用 php://filter 的 base64 编码(如 convert.base64-encode )读取文件时,靶场触发“do not hack”拦截——说明靶场对 base64 关键词做了检测。
2. 模糊测试枚举可用过滤器(Wfuzz工具的作用)
通过 wfuzz 对 php://filter 的过滤器进行模糊测试,枚举不被拦截的过滤器:
- 命令: wfuzz -u http://靶场IP/?filename=FUZZ{base64} --hh 888 -w ./php过滤器列表.txt
- -u :指定目标URL;
- FUZZ{base64} :标记过滤器的模糊测试位置;
- --hh 888 :过滤响应长度为888的结果(排除“do not hack”的拦截响应);
- -w :指定自定义的过滤器字典(包含各种 php://filter 支持的过滤器)。
3. 发现并利用 iconv 过滤器绕过
测试后发现 convert.iconv 过滤器未被拦截,于是构造编码转换的payload:
http://靶场IP/?filename=php://filter/convert.iconv.UTF-8.UTF-7/resource=./check.php
- 原理:利用 UTF-8 到 UTF-7 的编码转换,避免触发 base64 关键词的拦截,从而成功读取 check.php 的源码。
核心逻辑总结
当某类过滤器(如 base64 )被靶场拦截时,通过模糊测试枚举其他未被过滤的过滤器,再利用编码转换/非关键词过滤器绕过检测,最终实现文件读取——这是Web漏洞利用中“绕过WAF”的典型思路。