CTF & Wargame(CTF's)

scriptCTF Wizard Gallery writeup

KWAKBUMJUN 2025. 8. 18. 20:16

**복기용**


문제 분석

해당 문제는 ImageMagick을 활용하여 이미지를 업로드하는 기능이 있는 문제이다. 해당 문제를 풀기 위해서는 ImageMagick에서 발생하는 취약점인 CVE-2022-44268 사용해서 LFI를 터트려야 한다.

CVE-2022-44268

해당 취약점은 ImageMagick에서 convert로 이미지를 수정할 때, ReadOnePNGImage라는 함수에서 profile이라는 키워드가 발견될 경우에 발생하는 취약점이다. 여기서는 LFI 뿐만이 아니라 Privilege escalation도 발견될 수 있다.

코드 및 취약점 분석

@app.route('/logo-sm.png')
def logo_small():
    # A smaller images looks better on mobile so I just resize it and serve that
    logo_sm_path = os.path.join(app.config['UPLOAD_FOLDER'], 'logo-sm.png')
    if not os.path.exists(logo_sm_path):
        os.system("magick/bin/convert logo.png -resize 10% " + os.path.join(app.config['UPLOAD_FOLDER'], 'logo-sm.png'))
        
    return send_from_directory(app.config['UPLOAD_FOLDER'], 'logo-sm.png')

취약점은 해당 함수에서 발생한다.

<간단한 정리>

1. logo_sm_path 변수에 "/uploads/logo-sm.png" 경로를 저장한다.

2. 만약 "/upload/logo-sm.png 경로에 파일이 존재하지 않는다면
- convert logo.png -resize 10% /uploads/logo-sm.png 커맨드 실행

3. 만약 파일이 존재한다면 /uploads/logo-sm.png 반환

 

여기서 취약한 코드는 바로

os.system("magick/bin/convert logo.png -resize 10% " + os.path.join(app.config['UPLOAD_FOLDER'], 'logo-sm.png'))

이다.

-> 해당 커맨드는 logo.png를 resize하고 /uploads/logo-sm.png로 다시 저장하는 커맨드이다.

 

익스플로잇

CVE-2022-44268는 convert 할 때 발생한다. 따라서 우리는 logo.png를 악의적인 파일로 덮어쓴다면 악의적인 logo.png가 logo-sm.png로 저장되어 우리는 LFI를 터트릴 수 있을 것이다.

<간략 정리>

  1. pngcrush로 pngout.png 생성
  2. pngout.png 업로드 → burp에서 ../logo.png로 filename 수정해서 logo.png dump
  3. /logo-sm.png 엔드포인트 접속 → 여기서 logo-sm.png 다운로드
  4. identify -verbose logo-sm.png || strings logo-sm.png로 hex 확인
  5. 7363726970744354467b7430305f6d7563685f6d343669635f6638393538343539376664327d0a → scriptCTF{t00_much_m46ic_f89584597fd2}

-> 여기서 우리가 ../logo.png로 Filename을 수정하는 이유는 우리가 업로드하는 모든 파일들은 uploads 디렉터리에 저장되기 때문에 ../logo.png를 해줘야만 logo.png가 덮어써지기 때문이다.

 

과정(사진)

 

'CTF & Wargame(CTF's)' 카테고리의 다른 글

SunshineCTF writeup  (0) 2025.10.17
CCE 예선 - Photo Editing(web) 라이트업  (0) 2025.10.17
WatCTF writeup(web)  (0) 2025.09.11
제 31회 해킹캠프 CTF write up  (0) 2025.09.10
Full Weak Engineer CTF 2025 Writeup(web)  (0) 2025.09.10