日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一段困擾許久的防注入代碼

本文轉(zhuǎn)載自微信公眾號(hào)「Bypass」,作者Bypass。轉(zhuǎn)載本文請(qǐng)聯(lián)系Bypass公眾號(hào)。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、改則ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的改則網(wǎng)站制作公司

有段時(shí)間一直熱衷于研究各種waf繞過,一般來(lái)說(shuō),云WAF可以通過找到網(wǎng)站真實(shí)IP來(lái)繞過,硬件waf也常因?yàn)镠TTP協(xié)議解析差異導(dǎo)致繞過,但是,代碼層的防護(hù)往往只能從代碼邏輯里尋找繞過思路。

在一些網(wǎng)站通常會(huì)在公用文件引入全局防護(hù)代碼,因此,我收集了網(wǎng)絡(luò)上常見的PHP全局防護(hù)代碼進(jìn)行分析。第一次看到safe3的防注入代碼,花了不少時(shí)間去研究如何繞過,我在筆記里記下了一句話:如果正面懟正則,實(shí)在想不到繞過的方式。

直到前幾天,我在T00LS論壇里看到有人也問起了同一段防注入代碼的繞過方式,在這個(gè)帖子的回復(fù)了看到了一個(gè)繞過姿勢(shì)。這也正是安全社區(qū)最大的魅力,你總會(huì)在別人的回復(fù)里找到很有意思的思路或技巧。

繞過思路

利用preg_match函數(shù)正則匹配的字符串長(zhǎng)度限制繞過,PHP5.3之前preg_match函數(shù)閾值默認(rèn)為10w,PHP5.3開始默認(rèn)值為100w。

測(cè)試情況

(1) safe3 防注入代碼

 
 
 
 
  1. //Code By Safe3  
  2. ini_set('date.timezone','Asia/Shanghai'); 
  3. function customError($errno, $errstr, $errfile, $errline) 
  4.     echo "Error number: [$errno],error on line $errline in $errfile"; 
  5.     die(); 
  6. set_error_handler("customError",E_ERROR); 
  7. $getfilter="'|select|from|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
  8. $postfilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
  9. $cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; 
  10. function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){ 
  11.  
  12.     if(is_array($StrFiltValue)) 
  13.     { 
  14.         $StrFiltValue=implode($StrFiltValue); 
  15.     } 
  16.     if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){ 
  17.         slog("

    操作IP: ".$_SERVER["REMOTE_ADDR"]."
    操作時(shí)間: ".strftime("%Y-%m-%d %H:%M:%S")."
    操作頁(yè)面:".$_SERVER["PHP_SELF"]."
    提交方式: ".$_SERVER["REQUEST_METHOD"]."
    提交參數(shù): ".$StrFiltKey."
    提交數(shù)據(jù): ".$StrFiltValue); 
  18.         @header("http/1.1 404 not found");  
  19.         print "404: Not Found"; 
  20.         //slog("

    操作IP: ".$_SERVER["REMOTE_ADDR"]."
    操作時(shí)間: ".strftime("%Y-%m-%d %H:%M:%S")."
    操作頁(yè)面:".$_SERVER["PHP_SELF"]."
    提交方式: ".$_SERVER["REQUEST_METHOD"]."
    提交參數(shù): ".$StrFiltKey."
    提交數(shù)據(jù): ".$StrFiltValue); 
  21.         print "Url里含有非法字符串,屬于有誤操作!... 您還可以返回首頁(yè)"; 
  22.   ;exit(); 
  23.     } 
  24. //$ArrPGC=array_merge($_GET,$_POST,$_COOKIE); 
  25. foreach($_GET as $key=>$value){ 
  26.     StopAttack($key,$value,$getfilter); 
  27. foreach($_POST as $key=>$value){ 
  28.     StopAttack($key,$value,$postfilter); 
  29. foreach($_COOKIE as $key=>$value){ 
  30.     StopAttack($key,$value,$cookiefilter); 
  31. function slog($logs) 
  32.     $toppath=$_SERVER["DOCUMENT_ROOT"]."/log.htm"; 
  33.     $Ts=fopen($toppath,"a+"); 
  34.     fputs($Ts,$logs."\r\n"); 
  35.     fclose($Ts); 
  36. ?> 

(2) 構(gòu)建一個(gè)sql注入點(diǎn)

在頁(yè)面中引入防注入代碼:

 
 
 
 
  1. require_once('360_safe3.php'); 

當(dāng)參數(shù)中拼接sql語(yǔ)句時(shí),觸發(fā)關(guān)鍵字正則匹配導(dǎo)致攔截。

(3) 繞過姿勢(shì)

PHP測(cè)試版本:5.2.17

當(dāng)填充字符串超過10w的時(shí)候,可以繞過防注入代碼,獲取數(shù)據(jù)庫(kù)信息。

PHP測(cè)試版本:5.3.29

當(dāng)填充字符串超過100w的時(shí)候,可以繞過防注入代碼,獲取數(shù)據(jù)庫(kù)信息。


網(wǎng)頁(yè)標(biāo)題:一段困擾許久的防注入代碼
新聞來(lái)源:http://www.5511xx.com/article/cdeejpd.html