您现在的位置是:首页 >技术交流 >CTFHub | php://input网站首页技术交流

CTFHub | php://input

尼泊罗河伯 2024-09-12 12:01:04
简介CTFHub | php://input

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可以访问请求的原始数据的只读流,可以通过 POST 请求执行 PHP 代码
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 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。