CTF中遇见的PHP伪协议运用
来源:互联网 发布:ucloud 阿里云 哪个好 编辑:程序博客网 时间:2024/06/06 09:06
关于PHP伪协议中的总结网上已经有很多文章了
LoRexxar的PHP伪协议总结
PHP伪协议
官方文档
以下都是在做CTF题目的时候遇见的一些知识点,每遇到一点就会在这面做一些总结
php://input
php://input 是个可以访问请求的原始数据的只读流。因为它不依赖于特定的 php.ini 指令。
注:enctype=”multipart/form-data” 的时候 php://input 是无效的。
使用实例
// [POSTDATA] 123456echo file_get_contents("php://input", "r"); //123456
看了一些文章,使用方式好像就这样一种
主要还是对于伪协议的理解不够,当初比较傻,没看其他文章的前提下自我推测了一下为什么这样用,自己推测的原理附在这下面了
在文章PHP伪协议有这么一个实际例子
实例源码
<!--$user = $_GET["user"];$file = $_GET["file"];$pass = $_GET["pass"];if(isset($user)&&(file_get_contents($user,'r')==="the user is admin")){ echo "hello admin!<br>"; include($file); //class.php}else{ echo "you are not admin ! ";} -->// 解法为 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!<br>"; 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加密的源码
另外还有一个测试
测试结果为include()或require()中可以包含php://filter,可以得到加密后的源文件。
include_once()或require_once()不行
关于其他的一些应用,在做记录….
- CTF中遇见的PHP伪协议运用
- ctf中php常见的考点
- php 伪协议
- php伪协议
- CTF/php的弱类型总结(积累中)
- CTF中常见的php函数绕过(保持更新)
- php Rc4对接java过程中遇见的坑
- CTF 伪加密
- [CTF]zip伪加密
- 【CTF】PHP漏洞(学习积累中)
- 7.php中MongoDB的运用。
- PHP中goto语法的运用
- CTF比赛中必备的瑞士军刀ctf-tools
- 【CTF 攻略】CTF比赛中关于zip的总结
- PHP 中运用 elasticsearch
- php 中 遇见namespace 命名空间
- RTMP协议在蓝牙连接中传输数据的运用
- excel中遇见的问题
- 普及练习场 贪心 数列分段
- JS设置cookie,删除cookie
- 设计模式 模版方法模式 展现程序员的一天
- Linux yum源完全配置
- jquery全选-全不选,删除,批删,即点即改
- CTF中遇见的PHP伪协议运用
- Mysql-5.5源码安装
- Android:实现IM多人员组合的群组头像
- 浅谈网游加速器
- call和apply
- Python基础篇之__call__
- service日志相关持久化操作
- java中自定义使用{0}占位符功能之MessageFormat类
- IDEA 没有创建servlet选项