再看SQL注入實戰
發表時間:2023-06-04 來源:明輝站整理相關軟件相關文章人氣:4
[摘要]我們在以前已經講過SQL注入的一些原理和思路, 對于這種具有普遍性的攻擊, 對于建站者來說是很難防范的。 目前已經有了很多自動注入的工具, 但對于深入學習技術的人來說, 更好的掌握SQL注入實質對...
我們在以前已經講過SQL注入的一些原理和思路, 對于這種具有普遍性的攻擊, 對于建站者來說是很難防范的。 目前已經有了很多自動注入的工具, 但對于深入學習技術的人來說, 更好的掌握SQL注入實質對于進攻將更加有自信。
當然你一樣可以憑借自己的入侵經驗積累和手工注入技巧輕松進入網站的后臺了。 要知道, 工具黑客和手工黑客, 完全是兩個層次的水平, 工具誰都會用, 但是對于手工, 很多人卻得不到進入其中的法門。
在Web入侵技術中, 最搶眼的無可厚非自然是SQL注入, 而在SQL注入中, 又存在一種廣為流傳的技術叫做“瞬注”, 當然這是一門手工技巧, 就是數據庫的聯合查詢。 “瞬注”, 顧名思義, 瞬間注入得到密碼, 實戰中它能比全自動化的SQL注入工具還要快。
檢測漏洞
我們已經找到了一個注入點(這對于浩瀚的網絡來說并不難)在這個URL后面加上一個單引號后提交, 發現頁面變化了, 出現的異常表明可以趁虛而入。 初步推測這個數據庫的管理程序不是MS SQLServer, 而是另外一種常見的——Access。 幸運的是:瞬注對這兩種數據管理系統是通殺的。
用and 1=1和and 1=2看頁面是否相同就能確定注入漏洞的存在。 提交這樣的http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=1, 發現又變回了原來的正常頁面。 接下來提交http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2, 頁面再次出現異常。 現在注入漏洞的存在已經可以肯定了。
注意這里%20在地址欄中是空格的URL編碼表現形式。 數據庫管理系統為SQLServer的時候, 在URL后面加單引號會出現程序的出錯信息, 而ACCESS一般會出現頁面沒有內容的狀況。
猜測字段數
數據庫—表段—字段—字段內容是我們滲透的過程。 相鄰兩個都是由前至后一對多的關系。 在注入中數據庫的名字是相當不重要的, 我們用“瞬注”先不需要考慮是要猜解的表段的名字, 而是先看庫中是否有擁有我們猜測的字段總數的表。
假設這個表有10個字段, 提交:http://www.myxxxxx.org/showarticle.asp?id=2107 order by 10, Order命令本來其實是在SQL語句中用來排序的, 我們也可以巧妙地用它來猜測字段數目。 發現頁面出現異常, 表明語句錯誤。
為提高效率, 直接取10的折中數目5。 提交http://www.myxxxxx.org/showarticle.asp?id=2107 order by 5, 發現頁面仍然異常, 沒有內容顯示, 說明字段數還是太大。 利用這種二分法一步步的切下去。
當猜測的字段數小于等于(<=)實際總共字段數時, 頁面一直保持正常, 當我們猜測的字段數大于(>)表中實際字段總數時, 頁面就會出現也常。 這就是為什么看到頁面出現異常就去降低猜測的字段總數而不是增加的原因。
當提交http://www.myxxxxx.org/showarticle.asp?id=2107 order by 3時, 頁面終于正常了!
通過以上步驟, 我們終于可以確定, 數據庫中一定存在這么一個表, 該表內有3個字段。
猜測表名
得到了字段的總數目, 我們還需要表名才行。 同樣假設有一個表的名字是“Users”, 提交URL:http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from users, 空格會自動被轉換為%20。 提交后頁面什么內容都沒有顯示, 說明users這個表是不存在滴。
同樣再猜解admin, 這些都是常見的表明:http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from admin, 果然, 期望的頁面出來了。
這張頁面的“當前位置”后面寫的不再是路徑信息了, 變成了“1”, 而正文內容里面只有一個“2”, 說明字段1和2是可以顯示在頁面中的。
字段內容
為什么說瞬注比自動化的SQL注入工具還要快呢?因為它得到密碼的方法不是一個個字符地猜解, 而是直接爆出來, 但就像上面的操作一樣, 會出現不成功的情況!剛剛前面不是提交了個http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from admin, admin, 接下來頁面中出現了“1”和“2”嗎?這里的“1”和“2”是可以直接顯示在頁面上的, 我們如果把URL中的可顯示在頁面中的數字改成字段名的話, 那么字段內容(包含用戶名和密碼)就能直接在頁面中看到。
假設如果有23個字段的話, 就要寫成http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 from admin, 最后的數字為字段總數。
假設存放用戶名的字段名為user, 存放密碼的字段名為pass。 提交http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select user,pass,3 from admin, 當然同樣會出現錯誤的情況, 但知道出現MD5類的數值, 表明該字段內容被爆出來了。
后臺入侵
登錄后臺, 在MD5破解網站上解出密碼原文, 登入就可以隨意控制了。 事實上, 當我們用自動注入工具檢測時, 發現admin這個表中的確有3個字段id,username和password。 看看是不是和我們在頁面中爆出的一樣呢?瞬注這個網站當時我只花了3分鐘左右(當然, 經驗和運氣很重要, 對常見的表名和字段名要有積累), 而啊D整整跑了7分鐘。
這種入侵思路可以幫助我們更好的理解SQL入侵實質, 并且提高入侵效率, 不過運氣成分也很重要。
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。