1. 程式人生 > 其它 >Web安全學習筆記 SQL注入中

Web安全學習筆記 SQL注入中

Web安全學習筆記 SQL注入中

繁枝插雲欣 ——ICML8


  1. 許可權提升
  2. 資料庫檢測
  3. 繞過技巧

一.許可權提升

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.相同功能替換

  1. 函式替換

substring / mid / sub

ascii / hex / bin

benchmark / sleep

  1. 變數替換

user() / @@user

  1. 符號和關鍵字

and/ &

or / |

5.HTTP引數

  1. HTTP引數汙染

id=1&id=2&id=3

根據容器不同會有不同的結果

  1. HTTP分割注入

6.緩衝區溢位

一些C語言的WAF處理的字串長度有限
超出某個長度後的payload可能不會被處理
二次注入有長度限制時
通過多句執行的方法
改掉資料庫該欄位的長度繞過