因爲之前學習沒有記筆記的習慣。。_(:з」∠)_好多東西都是記了就忘了= =2333,所以就開坑寫總結來梳理一下知識點。要不白學了。。在這裏提醒一下大家= =一定要留筆記。。千萬要留筆記。。切記切記!
0x00 SQL注入簡介
SQL注入流行了很久也屬於危害較高的漏洞,可以通過網站存在的查詢語句進行構造,爲此開發者對其傷透了腦筋,漏洞不光是查詢,可能還存在與API、隱藏鏈接、http頭數據、寫入數據等。需要對數據包的結構和傳遞函數比較瞭解,建議學習的時候把數據庫的日誌打開,就可以查看到傳遞到數據庫的語句是什麼樣子的了。ps:有時候輸入的不一定是真正的最後的~
0x01 SQL注入類型
區分數字和字符串
數字上是不加單引號的如’2’+‘2’=‘22’而非’4’
而2+2=4
內聯SQL注入
sql注入主要是靠內聯SQL來進行注入的
and or 與或非的判斷來進行內聯SQL注入,等於在原先的語句上擴展出來的語句
報錯注入(布爾類型注入)
報錯注入顧名思義主要是利用數據庫報錯來進行判斷是否存在注入點。
常用的特殊字符:’ \ ; %00 ) ( # "
盲注(無報錯回顯注入)
沒有任何報錯顯示,但是能根據頁面是否正確顯示來進行判斷。如搜索注入沒有內容,正常搜索應該是有內容的。
Union注入
組合注入
0x02 SQL數據庫種類
Access
MySQL
註釋符號:==空格,/* */註釋,# Mysql–後面要加一個空格或者控制字符要不無法註釋
‘a’ ‘b’=‘ab’
SQLSever
註釋符號:==,/* */註釋
‘a’+‘b’=‘ab’
Oracle
註釋符號:==,/* */註釋
‘a’||‘b’=‘ab’
PostgreSQL
註釋符號:==,/* */註釋
‘a’||‘b’=‘ab’
DB2
SQLite
一種數據庫文件,特別小=。=就一個庫多個表,可用sqlite或者sqlite2打開
MongoDB
0x03 WEB中間件漏洞
IIS
Apache
Nginx
Tomcat
遠程代碼執行
jBoss
WebLogic
反序列化漏洞
0x04 SQL注入常用工具
SQLMAP
超級SQL注入工具
明小子
無_(:з」∠)_好多都沒有hh 上面兩個感覺就夠用了
0x05 SQL攻擊手段
數據庫提權
竊取哈希口令
數據庫Dump
生成一句話木馬
讀寫文件
load_file()函數讀取文件內容
使用限制:
1、文件權限:chmod a+x pathtofile
2、文件大小: 必須小於max_allowed_packet
建議將該函數禁止
UNION SELECT 1,2,load_file(‘c:\www\index.php’)–+
數據庫備份文件
0x06 SQL防禦手段
數據庫用戶權限分明
代碼層防禦 常用過濾變量
str_replace()替換過濾
單引號(’)
雙引號(")
反斜槓(\)
NULL
htmlspecialchars()函數 實體化過濾
預定義的字符是:
& (和號)成爲 &
" (雙引號)成爲 "
’ (單引號)成爲 ’
<>成爲 <>
就是把成變成一個純字符_(:з」∠)_
addslashes()函數 添加轉義字符
會在以下關鍵詞前面添加轉義字符
單引號(’)
雙引號(")
反斜槓(\)
NULL