SQL注入技術專題—由淺入深
不管用什么語言編寫的Web應用,它們都用一個共同點,具有交互性并且多數是數據庫驅動。在網絡中,數據庫驅動的Web應用隨處可見,由此而存在的SQL注入是影響企業運營且最具破壞性的漏洞之一。
SQL注入基本介紹
結構化查詢語言(Structured Query Language,縮寫:SQL),是一種特殊的編程語言,用于數據庫中的標準數據查詢語言。1986年10月,美國國家標準學會對SQL進行規范后,以此作為關系式數據庫管理系統的標準語言(ANSI X3. 135-1986),1987年得到國際標準組織的支持下成為國際標準。不過各種通行的數據庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。所以,實際上不同數據庫系統之間的SQL不能完全相互通用。
SQL注入(SQL Injection)是一種常見的WEB安全漏洞,攻擊者利用這個問題,可以訪問或修改數據,或者利用潛在的數據庫漏洞進行攻擊。
SQL注入產生原因
針對SQL注入的攻擊行為可描述為通過在用戶可控參數中注入SQL語法,破壞原有SQL結構,達到編寫程序時意料之外結果的攻擊行為。其成因可以歸結為以下兩個原因疊加造成的:
1. 程序編寫者在處理應用程序和數據庫交互時,使用字符串拼接的方式構造SQL語句
2. 未對用戶可控參數進行足夠的過濾便將參數內容拼接進入到SQL語句中
SQL注入攻擊方式
SQL注入的攻擊方式根據應用程序處理數據庫返回內容的不同,可以分為可顯注入、報錯注入和盲注: 1、可顯注入:攻擊者可以直接在當前界面內容中獲取想要獲得的內容 2、報錯注入:數據庫查詢返回結果并沒有在頁面中顯示,但是應用程序將數據庫報錯信息打印到了頁面中,所以攻擊者可以構造數據庫報錯語句,從報錯信息中獲取想要獲得的內容
3、盲注:數據庫查詢結果無法從直觀頁面中獲取,攻擊者通過使用數據庫邏輯或使數據庫庫執行延時等方法獲取想要獲得的內容
如何進行SQL注入攻擊
SQL注入攻擊是非常令人討厭的安全漏洞,是所有的web開發人員,不管是什么平臺,技術,還是數據層,需要確信他們理解和防止的東西。不幸的是,開發人員往往不集中花點時間在這上面,以至他們的應用,更糟糕的是,他們的客戶極其容易受到攻擊。下面的三部曲從漏洞發現到漏洞確認,再到漏洞利用,最后漏洞防御四個方面的技術做了詳細的講解。
SQL注入三部曲:
1、 滲透攻防Web篇-SQL注入攻擊初級
http://bbs.ichunqiu.com/thread-9518-1-1.html
2、 滲透攻防Web篇-SQL注入攻擊中級
http://bbs.ichunqiu.com/thread-9668-1-1.html
3、 滲透攻防Web篇-SQL注入攻擊高級
http://bbs.ichunqiu.com/thread-10093-1-1.html
SQL注入經驗與技巧
經驗很重要,成功往往在多次失敗之后。要想減少失敗,就多看文章積累技巧吧,下面集合了論壇相關技術文章,從各個方面介紹了SQL注入。
1、 SQL學習筆記
http://bbs.ichunqiu.com/thread-2274-1-1.html
2、 人人都可學會的MySQL高級注射技巧
http://bbs.ichunqiu.com/thread-10359-1-1.html
3、 詳解MySQL注射
http://bbs.ichunqiu.com/thread-10222-1-1.html
4、 淺談.NET應用程序SQL注入
http://bbs.ichunqiu.com/thread-7636-1-1.html
5、 在SQL注入中使用DNS獲取數據
http://bbs.ichunqiu.com/thread-10005-1-1.html
6、 WEB安全系列之如何挖掘sql注入漏洞(二次注入)
http://bbs.ichunqiu.com/thread-9193-1-1.html
7、深入了解php+mysql注入及修補!
http://bbs.ichunqiu.com/thread-10090-1-1.html
8、技巧整合 - mysql注入點的另類利用
http://bbs.ichunqiu.com/thread-9903-1-1.html
9、淺談sql注入中的Post注入
http://bbs.ichunqiu.com/thread-7762-1-1.html
相關教程
工具教程篇:
1、 SQLMAP注入教程-11種常見SQLMAP使用方法詳解
http://bbs.ichunqiu.com/thread-10583-1-1.html
2、 SQLMAP tamper WAF 繞過腳本列表注釋
http://bbs.ichunqiu.com/thread-10387-1-1.html
3、零基礎實戰審計SQL注射漏洞
http://bbs.ichunqiu.com/thread-10284-1-1.html
4、被動式SQL注入神器總結
http://bbs.ichunqiu.com/thread-8428-1-1.html
5、利用Burpsuit學習注入工具語句
http://bbs.ichunqiu.com/thread-8319-1-1.html
代碼審計篇 :
1、 PHP代碼審計SQL注入
http://bbs.ichunqiu.com/thread-11308-1-1.html
2、Joomla 3.xSql注入漏洞分析
http://bbs.ichunqiu.com/thread-1689-1-1.html
3、 淺談JSP安全開發之SQL注入
http://bbs.ichunqiu.com/thread-9958-1-1.html
4、 代碼審計之繞過addslashes總結
http://bbs.ichunqiu.com/thread-10899-1-1.html
相關技術及文檔:
1、 mysql數據庫學習
http://bbs.ichunqiu.com/thread-11248-1-1.html
2、 SQL注入自學指南
http://bbs.ichunqiu.com/thread-2141-1-1.html
3、 mssql注入經常使用的命令
http://bbs.ichunqiu.com/thread-3221-1-1.html
專業的視頻教程-告別文字的枯燥
1、 SQL注入漏洞 -視頻+實驗:活學活用
http://www.ichunqiu.com/course/405
2、 SQL注入漏洞審計及漏洞挖掘
http://www.ichunqiu.com/course/1325
3、 科普類-SQL(結構化查詢語言)注入攻擊的好處
-
改變SQL(結構化查詢語言)代碼來掩蓋你的攻擊
-
進行SQL(結構化查詢語言)注入攻擊
- 解釋一個SQL(結構化查詢語言)注入攻擊
http://www.ichunqiu.com/course/51849
4、SQL注入漏洞發現及修補技術(有攻有防才是王道)
http://www.ichunqiu.com/course/77
SQL注入工具
1、SQLmap
sqlmap 是一個開源的滲透測試工具,可以用來自動化的檢測,利用SQL注入漏洞,獲取數據庫服務器的權限。它具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項,包括獲取數據庫中存儲的數據,訪問操作系統文件甚至可以通過外帶數據連接的方式執行操作系統命令。
2、SSQLInjection
超級SQL注入工具(SSQLInjection)是一款基于HTTP協議自組包的SQL注入工具,支持出現在HTTP協議任意位置的SQL注入,支持各種類型的SQL注入,支持HTTPS模式注入。目前支持Bool型盲注、錯誤顯示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等數據庫。采用C#開發,底層采用Socket發包進行HTTP交互,極大的提升了發包效率,相比C#自帶的HttpWebRequest速度提升2-5倍。支持盲注環境獲取世界各國語言數據,直接秒殺各種注入工具在盲注環境下無法支持中文等多字節編碼的數據。
3、Pangolin
Pangolin是一款幫助滲透測試人員進行SQL注入測試的安全工具。它具備友好的圖形界面以及支持測試幾乎所有數據庫,并能夠通過一系列非常簡單的操作,達到最大化的攻擊測試效果。
收費的,所以不放項目地址。
4、 Havij
Havij是一款自動化的SQL注入工具,它不僅能夠自動挖掘可利用的SQL查詢,還能夠識別后臺數據庫類型、檢索數據的用戶名和密碼hash、轉儲表和列、從數據庫中提取數據,甚至訪問底層文件系統和執行系統命令。
收費的,所以不放項目地址。
5、The Mole
The Mole是一款開源的自動化SQL注入工具,其可繞過IPS/IDS(入侵防御系統/入侵檢測系統)。只需提供一個URL和一個可用的關鍵字,它就能夠檢測注入點并利用。The Mole可以使用union注入技術和基于邏輯查詢的注入技術。The Mole攻擊范圍包括SQL Server、MySQL、Postgres和Oracle數據庫。
6、SQLNinja
sqlninja是一款用perl寫的一個專門針對Microsoft SQL Server的sql注入工具。和市面上其他的注入工具不同,sqlninja沒有將精力用在跑數據庫上,而是側重于獲得一個shell。
kali自帶工具
7、BBQSQL
BBQSQL是一個Python編寫的盲注工具(blind SQL injection framework),當你檢測可疑的注入漏洞時會很有用。同時BBQSQL是一個半自動工具,允許客戶自定義參數。
8、Jsql
JSQL是一款Java開發的輕量級遠程服務器數據庫注入漏洞測試工具,且免費、開源、跨平臺 (Windows, Linux, Mac OS X, Solaris)。
項目地址: https://code.google.com/p/jsql-injection/downloads/list
9、Sqlsus
sqlsus是一個開放源代碼的MySQL注入和接管工具,sqlsus使用perl編寫,基于命令行界面。sqlsus可以獲取數據庫結構,注入你自己的SQL語句,從服務器下載文件,爬行web站點可寫目錄,上傳和控制后門,克隆數據庫等等
10、SQL Poizon
SQL Poizon是一個SQL注入掃描器,能夠利用搜索引擎搜羅互聯網上有SQL注入漏洞的網站。該工具內建瀏覽器和注入任務工具檢查注入效果。SQL Poizon的界面非常簡單,即使沒有多少技術功底的人也能輕松上手。
來自:http://bbs.ichunqiu.com/thread-12105-1-1.html?from=sec