《PHP實(shí)戰(zhàn):WAF的正確bypass》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):WAF的正確bypass,希望對您有用。如果有疑問,可以聯(lián)系我們。
本文屬i春秋的原創(chuàng)獎勵計劃,未經(jīng)許可禁止轉(zhuǎn)載!PHP實(shí)例
前言 半年前的我,手握各種WAF的bypass,半年之后的我.就把思路分享出來了.別問我什么!問了我也不會告訴你,我是沒事閑的!是不是好多人遇見WAF,就一陣頭大呢~今天我就開車?yán)瞺大家快上車!PHP實(shí)例
正文 測試環(huán)境PHP實(shí)例
php:我使用的是 phpStudyPHP實(shí)例
WAF:各種WAF的官網(wǎng)PHP實(shí)例
測試思路 php的本地環(huán)境是用來檢測sql語句是否可以執(zhí)行.PHP實(shí)例
WAF官網(wǎng)用來測試語句是否被攔截.PHP實(shí)例
重點(diǎn) :PHP實(shí)例
1.HTTP數(shù)據(jù)包的認(rèn)識.PHP實(shí)例
2.充分利用數(shù)據(jù)庫的注釋功能.PHP實(shí)例
3.有對WAF的構(gòu)造思路.PHP實(shí)例
測試代碼 本地PHP存在注入漏洞的代碼:PHP實(shí)例
<? php$id = $_GET['x']; $conn = mysql_connect('127.0.0.1','root','Lyy1314...'); mysql_select_db('ceshi',$conn); $sql = "select * from user where id={$id}"; $cun = mysql_query($sql); echo "< charset=utf-8>";while($row = mysql_fetch_array($cun)) { echo "url:".$row['URL']."<br>"; echo "password:".$row['password']."<br>"; echo "<hr>"; } mysql_close($conn); echo "您當(dāng)前執(zhí)行的SQL語句:"; echo urldecode($sql); ?>
GET型注入測試 - 偽造HTTP數(shù)據(jù)包 GET型注入相對于POST注入來說,在某些方面是比POST注入bypass更輕松一些的.這是為什么呢?答案是因?yàn)镻OST數(shù)據(jù)包中也包含了GET包哦~我們可以通過偽造POST數(shù)據(jù)包的方式進(jìn)行GET注入.PHP實(shí)例
也就是說,GET的類型最少有三種,甚至更多的數(shù)據(jù)包類型可以進(jìn)行注入.
PHP實(shí)例
如:POST、PUT、GET.
PHP實(shí)例
1.測試普通的GET型注入?PHP實(shí)例
PHP實(shí)例
可以發(fā)現(xiàn),上面成功接收到了GET數(shù)據(jù)包提交的數(shù)據(jù).這是理所當(dāng)然的!
PHP實(shí)例
2.測試POST提交的GET型注入?PHP實(shí)例
PHP實(shí)例
從上面可以看出,POST數(shù)據(jù)包種,確實(shí)包含了GET的數(shù)據(jù)包.所以,在有些時候進(jìn)行Bypass測試時,適當(dāng)?shù)母南聰?shù)據(jù)包類型,也是可以的哦.PHP實(shí)例
在360主機(jī)衛(wèi)士的之前版本中,POST提交只攔截POST的數(shù)據(jù),當(dāng)你利用POST數(shù)據(jù)包進(jìn)行GET注入時,它是不會進(jìn)行攔截的哦~ GET型注入測試?yán)@過云鎖 - 偽造HTTP數(shù)據(jù)包 首先,我們?nèi)ピ奇i的官網(wǎng)進(jìn)行Bypass測試! 我們在云鎖官網(wǎng)的URL后面加入 and 1=1 進(jìn)行測試.PHP實(shí)例
當(dāng)然,正如所料 100% 被攔截?PHP實(shí)例
?PHP實(shí)例
一般情況,大家都會扭頭就走~ 那我們現(xiàn)在來偽造個POST數(shù)據(jù)包,進(jìn)行測試把~?PHP實(shí)例
?PHP實(shí)例
正如我們期待的那樣,偽造數(shù)據(jù)包后,WAF就被一棍子打死了~ 有時,即使我們偽造數(shù)據(jù)包后,仍過不了WAF,不要灰心,因?yàn)檫@個時候WAF的規(guī)則絕對比GET包的規(guī)則少哦~ GET型注入測試 - 合理構(gòu)造HTTP數(shù)據(jù)包 - 思路 在http數(shù)據(jù)包中每個參數(shù)中間都會用&符連接,那么我們可不可以利用這個&符號呢? 下面我們先來進(jìn)行本地測試!?PHP實(shí)例
PHP實(shí)例
我們發(fā)現(xiàn)即使 &符后面的參數(shù)被 /* 包含住,這可以被接收到.并沒有被注釋掉! 那是因?yàn)? /* 被HTTP當(dāng)成了參數(shù)a的值,而并不是當(dāng)成了注釋! 有時候,我們可以利用這個方法,加其他的方法來bypass.PHP實(shí)例
后記 挖WAF的bypass時,一定要從多方面入手,編碼,協(xié)議,語句等,甚至有時都會利用系統(tǒng)的截斷!PHP實(shí)例
推薦大家買一本關(guān)于 HTTP協(xié)議 方面的書籍進(jìn)行閱讀,因?yàn)?只有越接近底層,才能越了解它.最后從方方面面進(jìn)行繞過.PHP實(shí)例
有編程功底的,可以思考一下WAF的編寫方式,哪里容易出現(xiàn)漏洞等~比如我們常常用來截斷文件的%00,在安全狗中卻能截斷安全狗對HTTP協(xié)議的檢測.比如菜刀過狗時,EVAL%00()是不會被殺的!不要只靠別人!思路是你自己的!你學(xué)到的知識也是屬于你自己的!
PHP實(shí)例
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/2029.html