目錄
?
0 錄制文件
1 SQL注入-布爾盲注
1.1 布爾盲注優缺點
1.2 先看一下第八關嗯頁面特征
1.3 步驟
1.4 常用函數
1.5 判斷是否字符型
1.6 判斷閉合
1.7 查詢庫名
1.8 查詢數據表
1.9 獲取字段名
1.10 獲取數據
1.11 布爾盲注缺陷
2 時間盲注
2.1 基礎知識
2.2 判斷注入點
2.2 構造?
2.3 假設法
2.4 獲取庫名
2.5 獲取數據表
2.6 獲取字段名
2.7 獲取數據
3 堆疊查詢
3.1 判斷有沒有堆疊
4 五種注入方式
4.1 post注入
4.1.1 抓取一下報文
4.1.2 判斷閉合類型
4.1.3 查詢數據庫
4.2 http頭部注入
4.2.1 正確登錄
4.2.2 添加單引號
4.2.3 判斷閉合
4.2.4 查詢數據庫
4.2.5 查詢數據表段數據
4.2.6 注入點在cookee字段
4.2.7 ua字段
?
0 錄制文件
錄制:的快速會議
日期:2025-07-03 08:38:42
錄制文件:https://meeting.tencent.com/crm/2pvQBe3j36
1 SQL注入-布爾盲注
1.1 布爾盲注優缺點
1.2 第八關頁面特征
頁面沒有報錯,也沒有顯示位
猜庫名,頁面報錯
1.3 步驟
1.4 常用函數
1.5 判斷是否字符型
一個單引號正常返回
1.6 判斷閉合
注釋之后正常返回,無閉合
1.7 查詢庫名
id=1' and substr((select database()),1,1)='b'--+
字母a不對,就依次往下改,a-z,第一個肯定是字母
用burp抓包,進行爆破
第一個字典是數字,第二個字典是字母
開始攻擊
對長度查詢
依然用burp爆破
?
依然對長度進行排序
從上到下組合字母,發現庫名為security
?
1.8 查詢數據表
查詢的還是系統庫,table_name from information…
id=1' and substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1)='b'--+
然后依然放到burp里進行爆破
查詢結果:id username
對長度排序,基本<947的都為真,可以得到所有表名
表名區分:當數據不連貫的時候,標識表名到此為止
第一張表到6
第二張表從8開始
可以一張表一張表的查詢,用limit限制,在burp里禁止有空格,用?代替
再去攻擊一下,發現這次數據正常
?
不用datebase(),直接根據庫名直接指定security
1.9 獲取字段名
查的是column,找的是columns
id=1' and substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1)='e'--+
用具體庫名指定更好
1.10 獲取數據
id=1' and substr((select username from users limit 0,1),1,1)='e'--+
id=1' and substr((select group_concat(username) from users),1,1)='e'--+
直接從users表查詢,用limit限制,第一個用戶查完去查第二個
去抓包一下
長度排序
數據:dump
這是對單個字段進行猜測的
也可以進行同時猜測的
1.11 布爾盲注缺陷
所有字符都是一個個猜出來的,速度非常慢
2 時間盲注
2.1 基礎知識
2.2 判斷注入點
時間盲注
不管用單引號還是括號,都是you are in?
假設存在數字型時間盲注
看一下正常網絡請求時間
再用時間盲注函數去發送請求
在加上括號去請求
一個不夠加兩個
然后去猜是不是字符型,添加單引號
這時候發現,頁面顯示時間7秒,正常2秒,睡眠5秒
說明存在字符型時間盲注
2.2 構造?
構造與布爾盲注一樣
2.3 假設法
id=1' and sleep(5)--+
2.4 獲取庫名
id=1' and if(substr((select database()),1,1)='a',sleep(5),0)--+
截取函數
然后去抓包
!這時候不是對長度排序
是對到達時間排序
超過5秒鐘的,是正常相應
根據前面的數字對字符排序
2.5 獲取數據表
id=1' and if(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='a',sleep(5),0)--+
依然對到達時間排序
簡化一下就是用limit限制成單個表名
也可以下載一下用ai排序
2.6 獲取字段名
2.7 獲取數據
?
3 堆疊查詢
可以用分號把前面的結束,然后再寫一條語句
在38關
3.1 判斷有沒有堆疊
或者直接插入一條語句(直接插入刪除數據庫函數)
刪除之后再訪問,就訪問不到了
刪除庫之后需要在創建一下數據庫,就可以正常使用
看網站源碼
語句是執行數據庫語句的函數,可以執行多條命令
4 五種注入方式
主要分為三種
4.1 post注入
11關 萬能密碼
成功登陸原因:
可以直接把用戶輸入插入到查詢語句中
密碼是隨便輸入的
因為用戶名為真,但是用戶名與密碼之間是or連接,用戶名里有“1”,有一個真就可以登陸
存在萬能密碼,必定存在數據庫注入漏洞
用戶名密碼隨便輸,再去登陸還是成功登陸
只要有"1",就可以登陸,1就是代表真
如果用戶名不存在,就在密碼那里構造,反之在用戶名構造。
4.1.1 抓取一下報文
發送到重放器
添加單引號驗證,頁面直接報錯,說明存在注入漏洞
不需要判斷數據類型,都是字符型
4.1.2 判斷閉合類型
4.1.3 查詢數據庫
注:post注入可以存在空格的,但是在burp不能存在空格
?
4.2 http頭部注入
20關
4.2.1 正確登錄
需要登錄之后再驗證,這時候需要知道正確賬號密碼:admin,admin
登陸成功,會在響應報文有一個set cookie字段
4.2.2 添加單引號
頁面還是報錯的
4.2.3 判斷閉合
手動閉合
4.2.4 查詢數據庫
選擇報錯注入漏洞
手動閉合不能去
然后當前的數據庫就出來了
4.2.5 查詢數據表段數據
4.2.6 注入點在cookee字段
注入方式:用布爾盲注去攻擊就好
4.2.7 ua字段
也要登陸之后去驗證
發送到burp
添加單引號還是報錯
添加單引號1,成功
然后再插入之前的
查詢到了數據庫
下面是源碼文件:
?
?
?
?
?
?
?
?
?
?
?
?
?