Wargame/Dreamhack
[Web] simple-ssti
λ¨λ°μ€
2023. 2. 25. 17:32
https://dreamhack.io/wargame/challenges/39/
simple-ssti
μ‘΄μ¬νμ§ μλ νμ΄μ§ λ°©λ¬Έμ 404 μλ¬λ₯Ό μΆλ ₯νλ μλΉμ€μ λλ€. SSTI μ·¨μ½μ μ μ΄μ©ν΄ νλκ·Έλ₯Ό νλνμΈμ. νλκ·Έλ flag.txt, FLAG λ³μμ μμ΅λλ€. Reference Server-side Basic
dreamhack.io
Code
#!/usr/bin/python3
from flask import Flask, request, render_template, render_template_string, make_response, redirect, url_for
import socket
app = Flask(__name__)
try:
FLAG = open('./flag.txt', 'r').read()
except:
FLAG = '[**FLAG**]'
app.secret_key = FLAG
@app.route('/')
def index():
return render_template('index.html')
@app.errorhandler(404)
def Error404(e):
template = '''
<div class="center">
<h1>Page Not Found.</h1>
<h3>%s</h3>
</div>
''' % (request.path)
return render_template_string(template), 404
app.run(host='0.0.0.0', port=8000)
Write Up
μμ μ½λλ₯Ό 보면 404μλ¬ νμ΄μ§μμ %request.pathλ₯Ό λ°νν΄μ€λ€λ κ²μ μ μ μλ€.
404Error λμ μνλ μμμ μ¨λ³΄λ, {{10*10}} μ λ£μ κ²½μ°μ ν μ€νΈ κ·Έλλ‘ λ€μ΄κ°λ κ² μλ κ³μ°λ κ°μ΄ μΆλ ₯λλ κ²μ νμΈν μ μλ€. μ΄ λΆλΆμμ ssti μ·¨μ½μ μ μ΄μ©νλ©΄,
μ΄ λΆλΆμμ ssti μ·¨μ½μ μ μ΄μ©νμ¬, {{config.items()}}λ₯Ό μ λ ₯νλ©΄,
νλκ·Έ νλ