λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
βœ’οΈ Web Hacking/Dreamhack

[Dreamhack] Image - Storage λ“œλ¦Όν•΅ μ›Œκ²Œμž„ 문제 풀이

by A Lim Han 2022. 11. 1.

5 - 0 - 1. Image - Storage 파일 μ—…λ‘œλ“œ 취약점 μ‹€μŠ΅

 

 

# Image - Storage 파일 μ—…λ‘œλ“œ 취약점 μ‹€μŠ΅

1. 문제 확인 ν›„ 문제 파일 λ‹€μš΄λ‘œλ“œ

 

 

 

 

2. index.php , list.php, upload.php 문제 파일 μ˜€ν”ˆ ν›„ 각각 뢄석

 

- index.php 파일

index.php

+ << Line 16 >>

: 인덱슀 νŽ˜μ΄μ§€μ—μ„œ list.php 둜 μ΄λ™ν•˜λŠ” 메뉴 좜λ ₯

 

+ << Line 17 >>

: 인덱슀 νŽ˜μ΄μ§€μ—μ„œ upload.php 둜 μ΄λ™ν•˜λŠ” 메뉴 좜λ ₯

 

 

 

- list.php 파일

list.php

+ << Line 24 ~ 30 >>

: $directory 의 νŒŒμΌλ“€ μ€‘μ—μ„œ νŠΉμ • μš”μ†Œλ₯Ό ν•„ν„°λ§ν•˜μ—¬ μ œμ™Έν•œ μƒνƒœλ‘œ λ‚˜μ—΄

λ‚˜μ—΄ μ‹œ μ œμ™Έ μš”μ†Œ
. .. index.html

 

 

 

- upload.php 파일

upload.php

+ μ΄μš©μžκ°€ μ—…λ‘œλ“œν•œ νŒŒμΌμ„ 검사 κ³Όμ • 없이 uploads 폴더에 볡사  -->  λ³„λ„μ˜ κ²€μˆ˜ 과정이 μ—†μ–΄ μ›Ή μ‰˜ μ—…λ‘œλ“œ κ³΅κ²©μ—μ„œμ˜ 취약점이 됨

+ μ‚¬μš©μžλŠ” μ—…λ‘œλ“œν•œ νŒŒμΌμ— http://host1.dreamhack.games:[포트]/uploads/[파일λͺ…]  톡해 μ ‘κ·Ό κ°€λŠ₯ 

 

+ << Line 13 ~ 14 >>

: μ‚¬μš©μžκ°€ μ—…λ‘œλ“œν•˜λ €λŠ” 파일λͺ…κ³Ό 같은 파일λͺ…이 이미 μ‘΄μž¬ν•  경우 "already exists" λ©”μ‹œμ§€ 좜λ ₯

 

 

++ << 뢄석 κ²°κ³Ό >>

upload.php 파일의 파일 ν™•μž₯μžμ— 필터링 μš”μ†Œ X flagκ°€ μ‘΄μž¬ν•˜λŠ” κ²½λ‘œλŠ” /flag.txt 
flagκ°€ μ‘΄μž¬ν•˜λŠ” 경둜둜 이동할 수 μžˆλŠ” λͺ…령을 μ‹€ν–‰ν•˜κΈ° μœ„ν•œ php νŒŒμΌμ„ μž‘μ„±ν•˜μ—¬ μ—…λ‘œλ“œ

 

 

 

 

3. λ©”λͺ¨μž₯에 flagfile.php 파일 μž‘μ„±

<?php
	system("cat /flag.txt");
?>

+ flagκ°€ μ‘΄μž¬ν•˜λŠ”  /flag.txt 둜 μ΄λ™ν•˜κΈ° μœ„ν•΄ php μ‹œμŠ€ν…œ λͺ…λ Ήμ–΄, cat λͺ…령어와 system ν•¨μˆ˜λ₯Ό μ‚¬μš©

+ μ°Έκ³ ) 파일λͺ…은 μ•„λ¬΄λ ‡κ²Œλ‚˜ 정해도 상관 X, 파일 ν™•μž₯μžκ°€ php이기만 ν•˜λ©΄ 됨

 

 

 

 

4. 접속 정보 확인 ν›„ μ•ˆλ‚΄λœ 링크둜 접속

 

 

 

 

5. Upload λ²„νŠΌ 클릭 ν›„ Upload νŽ˜μ΄μ§€λ‘œ 이동

 

 

 

 

6. μž‘μ„±ν•œ flagfile.php 파일 μ—…λ‘œλ“œ

 

 

 

 

 

 

7. λ‹€μ‹œ ν™ˆμœΌλ‘œ λŒμ•„κ°„ ν›„ List λ²„νŠΌ λˆŒλŸ¬μ„œ List νŽ˜μ΄μ§€λ‘œ 이동

 

 

 

 

8. μ—…λ‘œλ“œν–ˆλ˜ php 파일 클릭 --> flagκ°€ 좜λ ₯됨을 확인 κ°€λŠ₯

 

flagλŠ” DH{c29f44ea17b29d8b76001f32e8997bab} 이닀.