Alpacahack: dice roll

2026. 1. 21. 02:16·Alpacahack
반응형

문제 설명

Topic: Server-Side

분야:Web

난이도: Medium

🦙 < Roll the dice!


코드 분석

  • 사용자 입력이 그대로 쿼리스트링으로 /roll에 전달된다
  • 서버 응답을 innerHTML로 출력하므로, 서버가 어떤 HTML을 반환하든 그대로 표시됨
  • 핵심은 /roll에서 렌더링 되는 템플릿에 입력이 들어간다는 점

  • url입력에 username 입력받음
  • username이 템플릿에 그대로 합쳐짐
    즉, username에 alpaca{7*7}과 같은 입력을 주면 서버가 {7*7}를 계산해 출력하게 됨  → SSTI가능

  • Dockerfile에 플래그가 /flag-<md5>.txt 형태로 리네임돼 있으니, 일반적으로 "경로탐색 → 파일 읽기" 흐름으로 목표가 됨

 

취약점 분석

  • 사용자 입력 그대로 템플릿 코드에 합쳐진 뒤 Jinja2가 그 템플릿을 실행해버려서 데이터가 코드가 되는 순간이고 SSTI가 터짐
  • Jinja2 템플릿은 단순 문자열 치환이 아니라 표현식 실행 엔진임
  • {{ ... }} 또는 {% ... %} 같은 문법이 실행될 수 있음
  • 그래서 username에 템플릿 문법을 넣으면 서버가 실행하게 됨

문제 풀이

  • 먼저 {{ 7*7 }}을 입력해 SSTI 취약점이 터지는지 먼저 확인을 해봤고 응답을 보니 가능하다는 것을 확인
{{ cycler.__init__.__globals__.os.popen('ls /').read() }}
  • cycler.__init__.__globals__ : cycler의 __init__ 함수가 가진 전역 네임스페이스(dict)로 접근
  • os.popen('ls / ').read() : 서버에서 쉘 명령 ls /(루트 디렉터리 목록조회)를 실행하고, 그 출력을 읽어 문자열로 반환

으 문구를 username에 삽입

파일명 확인(flag -<md5>.txt) 후 

{{ cycler.__init__.__globals__.os.popen('cat /flag-f01dbe82bc9d1ea4a4de5d52f0f1dfbd.txt').read() }}
  • cat 명령어를 사용해 파일 내용을 확인해봄


SSTI 자료 참고 문헌: https://me2nuk.com/SSTI-Vulnerability/ 

반응형

'Alpacahack' 카테고리의 다른 글

Alpacahack: Stateless Auth  (0) 2026.01.25
Alpacahack: Animal Viewer  (0) 2026.01.22
Alpacahack: secret-table  (0) 2026.01.20
Alpacahack: Fushigi Crawier  (0) 2026.01.19
Alpacahack: I wanna be the Admin  (0) 2026.01.16
'Alpacahack' 카테고리의 다른 글
  • Alpacahack: Stateless Auth
  • Alpacahack: Animal Viewer
  • Alpacahack: secret-table
  • Alpacahack: Fushigi Crawier
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (167) N
      • Alpacahack (19) N
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (15)
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    webstudy
    JS
    hacking
    cve
    CSRF
    xss
    DreamHack
    webhacking
    LLM
    alpacahack
    JavaScript
    드림핵
    web
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
Alpacahack: dice roll
상단으로

티스토리툴바