PHP伪协议包含源码

等待笔记。。。

转载于:https://www.cnblogs.com/AardWolf/p/9986593.html

在CTF比赛中,PHP伪协议是一种常见的漏洞利用手段,尤其是在文件包含、文件读取、代码执行等场景中。以下是几种常见的利用方式及其原理。 ### 文件读取与编码转换 PHP伪协议 `php://filter` 可以用于读取文件内容并进行编码转换,常用于绕过文件读取限制。例如,通过 `convert.base64-encode` 编码方式读取敏感文件(如 `useless.php`)的源码: ``` file=php://filter/read=convert.base64-encode/resource=useless.php ``` 该方式不会执行文件中的PHP代码,而是将其内容以Base64编码的形式输出,从而避免因直接读取导致的代码执行问题[^3]。 ### 代码执行与输入流利用 `php://input` 是一种只读流,用于获取原始的POST请求数据。在CTF中,如果目标系统存在文件包含代码执行漏洞,攻击者可以通过 `php://input` 注入PHP代码并执行: ``` POST请求内容:<?php echo 'Hello, World!'; ?> URL参数:file=php://input ``` 该方式利用了服务器端未正确过滤输入的漏洞,将用户输入的代码作为PHP脚本执行[^4]。 ### 数据流嵌入与协议伪装 `data://` 协议允许将数据嵌入到URL中,常用于绕过文件上传限制或直接执行代码。例如,构造一个包含PHP代码的链接: ``` <a href="data:text/plain,<?php echo 'Hello, World!'; ?>">Click me!</a> ``` 在某些情况下,如果服务器端未正确过滤 `data://` 协议,攻击者可以通过此方式注入恶意代码并触发执行[^2]。 ### 压缩流与phar文件解析 `zlib://` 和 `phar://` 协议通常用于处理压缩文件流和PHAR归档文件。在CTF中,这些协议可以用于读取或解压特定格式的文件,甚至触发反序列化漏洞。例如,通过 `phar://` 协议访问归档文件中的内容: ``` file=phar://example.phar ``` 如果目标系统存在反序列化点,攻击者可以通过构造恶意PHAR文件实现远程代码执行[^1]。 ### 文件包含与本地路径遍历 `file://` 协议用于访问本地文件系统,常用于本地文件包含(LFI)漏洞的利用。例如,通过路径遍历读取敏感文件: ``` include=file:///etc/passwd ``` 结合日志文件或临时文件路径,攻击者可以上传恶意代码并触发执行,从而实现远程代码执行。 ### 示例代码:利用 `php://input` 执行代码 ```python import requests url = "http://example.com/vulnerable.php" payload = "<?php system('ls -la'); ?>" response = requests.post(url, data=payload) print(response.text) ``` 在上述示例中,通过向目标URL发送包含PHP代码的POST请求,并利用 `php://input` 读取原始数据,实现了远程命令执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值