SQL注入小總結

原理

	在程序開發時,開發人員沒有對可以進行數據庫交互的地方進行嚴格過濾。導致用戶在提交數據時,可以將構造的惡意sql語句提交到數據庫進行執行。

個人總結:sql注入就是惡意sql語句在數據庫被執行

攻擊方式(分類、步驟、工具)

分類:
基於位置點

				get
				post
				http頭部字段(user-agent、cookie、referer、IP) 

基於方法

		布爾
		union	
		數值
		時間
		報錯
		寬字節
		堆疊
		二次注入

攻擊步驟

1.注入點判斷(是否存在注入)
2.判斷數據庫
3.決定注入方法(用什麼注入,看實際情況)
4.爆庫、表、段

工具
sqlmap
技巧
在數據庫已經判斷出來後,準備爆庫之前,可以直接先看是否可以直接寫一句話馬到數據庫

常見繞過方式

1.繞過空格(註釋符/* */,%a0)
2.括號繞過空格:
  如果空格被過濾,括號沒有被過濾,可以用括號繞過。
在MySQL中,括號是用來包圍子查詢的。因此,任何可以計算出結果的語句,都可以用括號包圍起來。而括號的兩端,可以沒有多餘的空格。
select(user())from dual where(1=1)and(2=2)
3.引號繞過(使用十六進制)
4.逗號繞過(使用from或者offset)
5.比較符號(<>)繞過(過濾了<>:sqlmap盲注經常使用<>,使用between的腳本)
6.繞過註釋符號(#,--(後面跟一個空格))過濾
7.繞過union,select,where等
8.通用繞過(編碼)
9.等價函數繞過

getshell(方法)

1.如果是root權限,知道絕對路徑的情況下,嘗試直接寫一句話馬
2.爆出後臺管理員即密碼,登錄後臺,找上傳點

提權原理、工具

MOF提權原理 
MOF文件既然每五秒就會執行,而且是系統權限,我們通過mysql將文件寫入一 個MOF文件替換掉原有的MOF文件,然後系統每隔五秒就會執行一次我們上傳的 MOF。MOF當中有一段是vbs腳本,我們可以通過控制這段vbs腳本的內容讓系統 執行命令,進行提權。
利用條件
Windows<=2003 
mysql在c:windows/system32/mof目錄有寫權限
已知數據庫賬號密碼

UDF 
user defined funcion,即用戶自定義函數。用戶可以通過自己增加函數對 mysql功能進行擴充,文件後綴爲.dll。 
UDF提權原理 
通過添加用戶自定義函數導出dll,然後在mysql中使用用戶自定義函數以高權限 賬號執行命令,添加賬號進行提權。
利用條件 
windows2003、windowsXP、windows7 
擁有mysql的insert和delete權限

防護方式

1、使用安全的API 
2、對輸入的特殊字符進行Escape轉義處理 
3、使用白名單來規範化輸入驗證方法 
4、對客戶端輸入進行控制,不允許輸入SQL注入相關的 特殊字符 
5、服務器端在提交數據庫進行SQL查詢之前,對特殊字符進行過濾、刪除。
6、參數化查詢(最有效)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章