amocafe

2026. 2. 8. 20:06·Dreamhack 워게임/Lv.1
반응형

문제설명

아모카페에 오신 것을 환영합니다!

메뉴 번호를 입력하여 주문할 수 있는 웹 서비스가 작동하고 있습니다. 아모의 최애 메뉴를 대신 주문해 주면 아모가 플래그를 준다고 합니다. 첨부파일로 주어지는 웹 서비스의 코드를 분석하여 메뉴 번호를 알아 내세요! 플래그는 flag.txt 파일과 FLAG 변수에 있습니다.
문제에서 주어진 flag.txt 파일에 적혀있는 플래그는 sample 플래그입니다.

플래그 형식은 DH{...} 입니다.


코드분석

@app.route('/', methods=['GET', 'POST'])
def index():
    menu_str = ''
    org = FLAG[10:29]
    org = int(org)
    st = ['' for i in range(16)]
  • FLAG[10:29]: FLAG 문자열의 부분 문자열을 뽑는다.
  • int(org): 그 부분 문자열을 10진수 정수로 변환한다.
  • st: 길이 16짜리 리스트 생성
for i in range (0, 16):
        res = (org >> (4 * i)) & 0xf
        if 0 < res < 12:
            if ~res & 0xf == 0x4:
                st[16-i-1] = '_'
            else:
                st[16-i-1] = str(res)
        else:
            st[16-i-1] = format(res, 'x')
    menu_str = menu_str.join(st)
  • org >> (4*i) & 0xf : org를 오른쪽으로 4비트씩 밀고 마지막 4비트만 뽑음
  • res가 0~12면서 ~res & 0xf == 0x4이면 _ 를 삽입
  • 아니면 res를 그대로 숫자 문자열로 저장 "1" ~ "11"
  • 둘 다 아니면 format(res, 'x')로 16진수 문자 (0, c, d, e, f)로 저장

익스플로잇

가장 좋아하는 메뉴가 1_c_3_c_0__ff_3e 라고 한다. 

 

'_' 는 res=11 (0xb)를 의미한다.

  • ~res & 0xf == 0x4 ⇒ 0xf ^ res = 0x4 ⇒ res = 0xb

따라서 1_c_3_c_0__ff_3e 는 1bcb3bcb0bbffb3e가 된다

그리고 원래 코드가 10진수라고 했으니 2002760202557848382를 입력해주면

 

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

Type c-j  (0) 2026.02.08
baby-union  (0) 2026.02.08
command-injection-chatgpt  (0) 2026.02.08
Apache htaccess  (0) 2026.02.08
File Vunleravility Advanced for Linux  (0) 2026.02.07
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • Type c-j
  • baby-union
  • command-injection-chatgpt
  • Apache htaccess
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
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
amocafe
상단으로

티스토리툴바