0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
php://input:
(无)
0x02 解题过程
Ⅰ简单分析网页显示内容中的源代码,判断如果参数以 php:// 开头,那么执行 include 函数将参数值作为文件包含进来。否则,输出字符串 Hacker!!! 。
Ⅱ点击 phpinfo 超链接查看跳转到 php 版本页面。
Ⅲ使用 file 查看 php://input ,页面提示“我没有 shell ,我该怎么获得 flag 。”使用 file 查看 111 , 222 , phpinfo.php 都是跳转到这样的页面,说明网页可能存在文件包含。但是加上了 hacker!!! 因为我们没有用 php://input 去查看,所以会返回否则中的代码块。
http://challenge-989244bb6f61e22b.sandbox.ctfhub.com:10800/?file=php://input
Ⅳ其实这个文件包含漏洞,我们需要访问到对方目标文件的 flag 文件即可获得,我们需要使用 file 在目标 url 中访问 php://input 去执行文件包含。那么接下来就可以使用抓包工具抓取,并发送到重放器中。
Ⅴ在重放器中修改 GET 请求为 POST 请求,使用参数 <?PHP system("ls /"); ?> 就可以查看到目标站点中的文件,其中 system 是目标系统,括号中的内容执行命令。
<?PHP system("ls /"); ?>
Ⅵ使用 cat 命令查看 flag_20145 文件发现此题 flag 。
<?php system("cat /flag_20145"); ?>
0x03 php://input
0x1 相关 PHP 伪协议
php://input 是 php 语言中一个只读的数据流,通过 "php://input" ,可以读取从 HTTP 客户端以 POST 方式提交的所有数据。
php://filter | 是 PHP 内置的过滤器流,可以读取源代码,并过滤输出 |
php://output | 是一个只写的数据流, 可以通过 print 和 echo 一样的方式写入到输出缓冲区。 |
php://input | 可以访问请求的原始数据的只读流,可以通过 POST 请求执行 PHP 代码 |
注意:php://input 需要开放 allow_url_include 。
0x2 file://协议
file:// 协议主要用于访问本地文件,在双 off 的情况下也可以正常执行。
allow_url_fopen :off / on |
allow_url_include:off / on |
0x04 参考文献
[1].xq17. 浅析php文件包含及其getshell的姿势[EB/OL]. [2023-06-08]. https://xz.aliyun.com/t/5535.
[2].My_Dreams. php伪协议总结[EB/OL]. [2023-06-08]. https://www.cnblogs.com/zzjdbk/p/13030717.html.
0x05 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。