php伪协议漏洞_CTF中遇见的PHP伪协议运用,ctfphp伪协议

本文介绍了CTF比赛中遇到的PHP伪协议的运用,包括php://input和php://filter的使用场景。php://input用于获取POST请求的原始数据,而在某些情况下可以用来绕过限制。php://filter则常用于文件读取和过滤,配合include函数可能导致任意文件读取或getshell漏洞。文中还提到了如何利用这些伪协议来解密和读取文件内容。
摘要由CSDN通过智能技术生成

CTF中遇见的PHP伪协议运用,ctfphp伪协议

关于PHP伪协议中的总结网上已经有很多文章了

LoRexxar的PHP伪协议总结

PHP伪协议

官方文档

以下都是在做CTF题目的时候遇见的一些知识点,每遇到一点就会在这面做一些总结

php://input

php://input 是个可以访问请求的原始数据的只读流。因为它不依赖于特定的 php.ini 指令。

注:enctype=”multipart/form-data” 的时候 php://input 是无效的。

使用实例

// [POSTDATA] 123456

echo file_get_contents("php://input", "r"); //123456

看了一些文章,使用方式好像就这样一种

主要还是对于伪协议的理解不够,当初比较傻,没看其他文章的前提下自我推测了一下为什么这样用,自己推测的原理附在这下面了

在文章PHP伪协议有这么一个实际例子

实例源码

// 解法为 url/index.php?user=php://input

// [POSTDATA] the user is admin

// 最后输出为hello admin!并且包含对应文件

原理过程

自己猜的,求大佬指点

首先先对以下两点进行了解

1. file_get_contents()

2. php://input (开头已经提到了)

file_get_contents()

在官方手册中file_get_contents()是用来将文件的内容读入到一个字符串中的首选方法,并且给出了几个运用实例。

在实例中可以发现,file_get_contents()的$filename参数不仅仅为文件路径,还可以是一个URL(伪协议)。

echo file_get_contents('http://www.baidu.com', 'r');

// 将会在该页面中输出一张和百度一模一样的页面

这个URL应该也是PHP伪协议中http://中的运用

接下来过程就很好理解了

file_get_contents() 解析传入字符串发现是伪协议中的php://input,便读取了[POSTDATA]的数据保存为一个字符串。

既通过了验证。

php://filter

php://filter是我们常常使用的一个伪协议,在任意文件读取,甚至getshell的时候都有利用的机会。

在include函数的使用上,经常会造成任意文件读取漏洞

file_get_contents()和file_put_contents()这样函数下,常常会构成getshell等更严重的漏洞。

更具体的可以看LoRexxar的PHP伪协议总结

这边说CTF中遇到的使用实例

任意文件读取

实例为bugKu中WEB的welcome to bugkuctf

$user = $_GET["txt"];

$file = $_GET["file"];

$pass = $_GET["password"];

if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){

echo "hello admin!
";

include($file); //hint.php

}else{

echo "you are not admin ! ";

}

// 条件一使用php://input即可绕过,上面有介绍

// 这边发现include()动态包含了$file参数

// 传入file=php://filter/read=convert.base64-encode/resource=index.php 即可得到index.php的BASE64加密的源码

关于其他的一些应用,在做记录….

/php/4784.htmlwww.phpzy.comtrue/php/4784.htmlTechArticleCTF中遇见的PHP伪协议运用,ctfphp伪协议 关于PHP伪协议中的总结网上已经有很多文章了 LoRexxar的PHP伪协议总结 PHP伪协议 官方文档 以下都是在做CTF题目的时候遇见的一些知识点,每遇到一...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值