[HelloCTF]PHPinclude-labs超详细WP-Level 4-http协议
源码分析
定位到关键代码
-
isset($_GET['wrappers']) ? include("http://".$_GET['wrappers']) : '';
-
通过
三目运算
判断是否 GET 传入参数wrappers
-
如果有的话, 代入
include()
执行, 并且前面跟上http://
解题分析
-
这一关要求我们使用
http协议
-
其实使用
http协议
进行文件包含, 也就是在 [Level 0]([[Level 0-PHPinclude-labs-WP]]) 提到的远程文件包含-
并且该关卡已经开启了如下配置
-
allow_url_fopen: On allow_url_include: On
-
-
-
因为在靶场当前目录在已经有了
phpinfo.txt
和backdoor.txt
- 就不需要我们自己部署
http服务
来传输文件了, 直接使用靶机自己的
- 就不需要我们自己部署
-
拿
phpinfo.txt
举例, Payload 如下-
http://靶机ip/?wrappers=靶机ip//phpinfo.txt
-
当然这里传入参数中,
靶机的ip
可以使对外的ip, 可以是127.0.0.1
-
-
解题步骤
-
把上文包含的文件改为
backdoor.txt
, 然后再 POST 请求传入获取Flag命令即可 -
http://靶机ip/?wrappers=靶机ip//backdoor.txt
-