摘要: SQLMap相信大家都不陌生,這篇文章將會告訴大家如何使用 SQLMap 的一些功能來繞過 WAF / IDS,快來一起學(xué)習(xí)吧!
Web 應(yīng)用防火墻已經(jīng)成為眾多企業(yè)的安全解決方案,然而還是有許多公司僅僅依靠防火墻來進(jìn)行保護(hù)。不幸的是,大多數(shù)(不是所有)的防火墻都可以被繞過,在這片文章中,我將會演示如何使用 SQLMap 的一些功能來繞過 WAF / IDS。
原作者為 SQLMap 編寫了一些script,可以在 subversion 存儲庫的最新開發(fā)版本中找到:svn checkout。
篡改script的重點(diǎn)在于是使用特殊方法修改請求來避免 WAF 的檢測,在某些情況下,可能需要將若干個script組合起來一起繞過 WAF。
我將要演示的第一個是和space2morehash.py,它們可以與 MySQL 一起使用(依然沒有在MSSQL上進(jìn)行嘗試)。這些將所有空格替換為使用隨機(jī)文本來截斷注釋,擴(kuò)展版本(space2morehash.py)還將在某些函數(shù)名稱和括號之間添加注釋。
要開始使用篡改script,需先使用 –tamper 參數(shù),后面再加上其名稱。在本文的示例中,我將使用以下命令:
sqlmap -u http://192.168.0.107/test.php?id=1 -v 3 --dbms "MySQL" --technique U -p id --batch --tamper "space2morehash.py"

如圖1所示,使用了%23randomText%0A來替換注入中的空格,當(dāng)然這是經(jīng)過URL編碼的。部分函數(shù)如:CHAR(), USER(), CONCAT() 都變?yōu)?nbsp;FUNCTION%23randomText%0A() ,因?yàn)樗鼈儾]有出現(xiàn)在IGNORE_SPACE_AFFECTED_KEYwordS的黑名單中。這是因?yàn)?strong>MySQL的函數(shù)名稱的解析以及它是如何處理函數(shù)的調(diào)用和標(biāo)識符的。
另外兩個替換空格的是space2mssqlblank.py和space2mysqlblank.py。MySQL允許字符 09, 0A-0D, A0 被用作空格,而MSSQL允許的字符范圍要更加的寬,包括從 01-1F。

接下來我們有一些亂碼的: 和 。這些對于繞過不同的關(guān)鍵字過濾非常有用,例如,當(dāng)檢測到 table_name 且無法繞過它時。

如果 Web 應(yīng)用的 URL 由于某些原因解碼了請求,則 chardoubleencode.py 就可以派上用場。

此外,如果有的應(yīng)用是用 ASP / ASP.NET 編寫的話,則 和 就可以用于隱藏真正有效的 payload。

ASP 的一個有趣特性就是可以在字符之間添加任意數(shù)量的百分號。例如,AND 1=%%%%%%%%1 就十分有效!

"總之,我只是展示了一部分的scri[t,我強(qiáng)烈建議你們在使用前要對其進(jìn)行測試,因?yàn)槊總€script可以在不同的情況下使用。