Web常規漏洞總結之[SQL注入]--慢慢完善

因爲之前學習沒有記筆記的習慣。。_(:з」∠)_好多東西都是記了就忘了= =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

輸入驗證

編碼輸出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章