Web安全學習筆記 SQL注入中
Web安全學習筆記 SQL注入中
繁枝插雲欣 ——ICML8
- 許可權提升
- 資料庫檢測
- 繞過技巧
一.許可權提升
1. UDF提權
UDF
User Defined Function,使用者自定義函式
是MySQL提供的一個功能
可以通過編寫DLL擴充套件為MySQL新增新函式
擴充其功能
當獲得MySQL許可權之後
即可通過這種方式上傳自定義的擴充套件檔案
從MySQL中執行系統命令
二.資料庫檢測
1. MySQL
sleep sleep(1)
benchmark BENCHMARK(5000000, MD5('test'))
字串連線
SELECT 'a' 'b'
SELECT CONCAT('some','string')
version
SELECT @@version
SELECT version()
識別用函式
connection_id()
last_insert_id()
row_count()
2. Oracle
字串連線
'a'||'oracle' --
SELECT CONCAT('some','string')
version
SELECT banner FROM v$version
SELECT banner FROM v$version WHERE rownum=1
3. SQLServer
WAITFOR WAITFOR DELAY '00:00:10';
SERVERNAME SELECT @@SERVERNAME
version SELECT @@version
字串連線
SELECT 'some'+'string'
常量
@@pack_received
@@rowcount
4. PostgreSQL
sleep pg_sleep(1)
三. 繞過技巧
1.編碼繞過
大小寫
url編碼
html編碼
十六進位制編碼
unicode編碼
2.註釋
// -- -- + -- - # /**/ ;%00
內聯註釋用的更多
它有一個特性 /!**/
只有MySQL能識別
e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3
3.只過濾了一次時
union
=> ununionion
4.相同功能替換
- 函式替換
substring
/ mid
/ sub
ascii
/ hex
/ bin
benchmark
/ sleep
- 變數替換
user()
/ @@user
- 符號和關鍵字
and
/ &
or
/ |
5.HTTP引數
- HTTP引數汙染
id=1&id=2&id=3
根據容器不同會有不同的結果
- HTTP分割注入
6.緩衝區溢位
一些C語言的WAF處理的字串長度有限
超出某個長度後的payload可能不會被處理
二次注入有長度限制時
通過多句執行的方法
改掉資料庫該欄位的長度繞過