(此爲課堂筆記整理,方便日後學習)
一. SQL注入攻擊原理
原因分析:
由於程序中對用戶輸入檢查不嚴格,導致用戶提交的非法數據被當作SQL語句的一部分來執行(即改變了系統後臺原有的SQL語句結構),從而使攻擊者獲得某些他想得知的數據。
目標:
借Web應用的”刀“來攻擊服務器數據庫或操作系統
二. SQL注入攻擊類型
A. 字符串內聯注入
B. 數字值內聯注入
C. 終止式注入:利用註釋符
D. 搜索型注入:利用搜索關鍵字
A. 字符串內聯注入:
程序員考慮的場景:
Username: admin
Password: p@$$w0rd
SELECT COUNT(*) FROM Users WHERE username='admin' and password= 'p@$$w0rd'
程序員未考慮的場景:
Username: admin' and 1=1 OR ‘1’=‘1
Password: 1
SELECT COUNT(*)FROM Users WHERE username=‘admin' and 1=1 OR 1’=‘1 and password='1'
B. 數字值內聯注入:
常用的判斷SQL注入攻擊方法:在數字型的參數後跟上假條件或真條件
http://.../list.php?uid=45 and 1=1 頁面返回正確
http://.../list.php?uid=45 and 1=X 頁面返回錯誤
C. 終止時注入:
終止式SQL語句注入是指攻擊者在注入SQL代碼時,通過註釋剩下的查詢來成功結束該語句。
常用的向數據庫添加註釋的語法如下:
1、--:用於單行註釋,該符號後的SQL語句將不再被執行
2、/* */用於多行註釋,處於該符號中間的SQL語句不會被執行
三. SQL注入攻擊常見的方法:
SQL注入工具:(SQLMAP、BurpSuite等)
手工注入:
a. 聯合查詢
b. SQL盲注
四. SQL注入流程:
(1)找到帶參的URL或表單
(2)判斷是否存在注入
(3)通過SQL注入語句實施注入攻擊:
猜解表名;猜解列名;猜解內容