2017-2018-2 20179209《網絡攻防》第十一周作業
研究緩沖區溢出的原理,至少針對兩種數據庫進行差異化研究
MYSQL與DB2對比
賬號管理方式
MySQL賬號管理的方式與Oracle類似,由MySQL自己管理,賬號存儲在MySQL數據庫的user表中,其賬號的組成是有ip地址+用戶名組成,而DB2沒有自己的用戶體系,其認證完全依賴於操作系統的賬號。權限管理方式
MySQL的權限管理方式與DB2權限管理方式上相同的地方就是都可以對單獨的對象進行授權,都可以做到細粒度的授權。不同之處就是MySQL在賬號安全上更勝一籌,其賬號組成是由用戶名加ip地址構成,也就是說其鑒權需要同時驗證用戶登錄的ip和用戶名的合法性,而db2只對連接的賬號進行鑒權。MySQL的另一個優點就是對最小單元的對象可以批量進行授權,DB2則不能,相對比較繁瑣,這也是DB2需要改進的地方之一。日誌管理方式
MySQL數據庫使用日誌雙寫的方式來保證數據的完整性與可恢復性,MySQL的事務日誌與歸檔日誌兩個獨立的對象,沒有任何因果關系。DB2數據庫的歸檔日誌是有事務日誌產生的。所以在UDI操作上MySQL數據庫的性能要比DB2差一些。鎖的管理方式
MySQL使用MVCC模型實現鎖的並發控制,DB2使用內存模型實現了鎖的並發控制,在並發處理、處理資源沖突上講MySQL的並發處理能力、鎖沖突的方式上要優於DB2。schema的管理方式
MySQL數據庫嚴格意義上講沒有schema的概念,其每個schema相當於獨立的一個數據庫。db2數據庫可以在一個數據庫能創建多個schema。這也是MySQL在schema方面存在的不足及需要改進的地方。表空間的管理方式
MySQL數據庫在5.6之後才有了表空間的概念,但其在表空間的使用方式上還是與企業級數據庫相差很大。MySQL數據庫在表空間上支持相對較弱,存在很多的局限性,在條帶化及空間的管理上存在軟肋。DB2在這些方面做得都十分完善,而且非常健壯易於維護,這些都是MySQL需要加強向企業數據庫學習的地方。事物行為的處理方式
MySQL數據庫默認在處理事務相關的操作時只是回退上一條語句的狀態,而整個事務實際上沒有完成(提交或者回滾),而是交由應用程序在檢測到這個錯誤時,選擇是提交或者回滾整個事務。DB2數據庫對事務的處理方式是當DB2數據庫在因鎖超時或者其他問題導致異常後,對整個事務進行回滾,而不是回滾到上一個保存點,這是需要特別關註的地方。
針對不同數據類型,研究SQL註入點的發現與註入技術
搜索型註入點
這是一類特殊的註入類型。這類註入主要是指在進行數據搜索時沒過濾搜索參數,一般在鏈接地址有"keyword=關鍵字",有的不顯示的鏈接地址,而是直接通過搜索框表單提交。
此類註入點提交的 SQL 語句,其原形大致為:select * from 表名 where 字段 like ‘%關鍵字%‘
當我們提交註入參數為keyword=‘and[查詢條件] and ‘%‘=‘
,則向數據庫提交的完事SQL語句為:
select * from 表名 where 字段 like ‘%‘ and [查詢條件] and ‘%‘=‘%‘
。
字符型註入點
形如http://****?Class=日期這類註入的參數是"字符",因此稱為字符型註入點。
此類註入點提交的 SQL 語句,其原形大致為:select * from 表名 where 字段=‘日期‘
當我們提交註入參數為http://****Class=日期 And[查詢條件]時,向數據庫提交的完整 SQL 語句為:select * from 表名 where 字段=‘日期‘ and [查詢條件]
數字型註入點
形如http://****?ID=55,這類註入的參數是"數字",因此稱為"數字型註入點"。
此類註入點提交的SQL語句,其原形大致為:select * from 表名 where 字段=55
當我們提交註入參數為http://****?ID=55 And[查詢條件]時,向數據庫提交的完整 SQL 語句為:select * from 表名 where 字段=55 And [查詢條件]
使用兩種數據庫註入攻擊工具
sqlmap
sqlmap簡介
sqlmap支持五種不同的註入模式:
- 基於布爾的盲註,即可以根據返回頁面判斷條件真假的註入。
- 基於時間的盲註,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
- 基於報錯註入,即頁面會返回錯誤信息,或者把註入的語句的結果直接返回在頁面中。
- 聯合查詢註入,可以使用union的情況下的註入。
- 堆查詢註入,可以同時執行多條語句的執行時的註入。
sqlmap部分命令
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 –dbs
查詢有哪些數據庫
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test –tables
查詢test數據庫中有哪些表
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin –columns
查詢test數據庫中admin表有哪些字段
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin -C “username,password” –dump
dump出字段username與password中的數據
SQL Power Injector
簡介
SQL Power Injector是一款在.Net 1.1中創建的應用程序,可幫助滲透測試人員在網頁上查找和利用SQL註入。支持Windows,Unix和Linux操作系統。
SQL Server,Oracle,MySQL,Sybase / Adaptive Server和DB2兼容。SSL支持,自動從網頁上的表單或IFrame加載參數(GET或POST)檢測並瀏覽框架測網站語言的選項檢測並添加加載頁面進程期間使用的Cookie(Set-Cookie檢測)自動查找提交頁面,其方法(GET或POST)以不同的顏色顯示可以直接在Datagrids中創建/修改/刪除加載的字符串和Cookie參數單個SQL註入盲目的SQL註入比較頁面的真實和錯誤響應或cookie中的結果時間延遲SQL註入在自定義瀏覽器中的響應可以使用HTML上下文顏色查看返回頁面的HTML代碼源並在其中搜索微調參數和cookie註入
可以參數化預期結果的長度和計數以優化應用程序執行SQL註入所用的時間創建/編輯預設的ASCII字符,以優化盲註SQL請求數/請求速度
多線程(最多可配置50個)選項可以通過空的評論/ ** /針對IDS或過濾器檢測來替換空間在發送之前自動編碼特殊字符自動檢測響應頁面中的預定義SQL錯誤響應頁自動檢測預定義的單詞或句子實時結果將會話保存並加載到XML文件中自動查找正面答案和負面答案頁面之間差異的功能
可以創建一個範圍列表,它將替換隱藏的SQL註入字符串中的變量(>)並自動為您播放它們使用文本文件中的預定義列表自動重播變量範圍
Firefox插件,它將啟動SQL Power Injector以及當前網頁的所有信息及其會話上下文(參數和cookie)
兩個集成工具:Hex和Char編碼器和MS SQL @options解釋器,可以編輯Referer,可以選擇一個用戶代理(或者甚至在用戶代理XML文件中創建一個),可以使用設置窗口配置應用程序,支持可配置的代理,軟件截圖。
軟件截圖
2017-2018-2 20179209《網絡攻防》第十一周作業