λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🏴CTF/DreamHack

Dreamhack - μ›Œκ²Œμž„, php-1

by Janger 2021. 11. 21.
728x90
λ°˜μ‘ν˜•

https://dreamhack.io/wargame/challenges/46/

 

php-1

php둜 μž‘μ„±λœ Back Office μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. LFI 취약점을 μ΄μš©ν•΄ ν”Œλž˜κ·Έλ₯Ό νšλ“ν•˜μ„Έμš”. ν”Œλž˜κ·ΈλŠ” /var/www/uploads/flag.php에 μžˆμŠ΅λ‹ˆλ‹€. Reference Server-side Basic

dreamhack.io

 

 

 

php둜 μž‘μ„±λœ Back Office μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

LFI 취약점을 μ΄μš©ν•΄ ν”Œλž˜κ·Έλ₯Ό νšλ“ν•˜μ„Έμš”. ν”Œλž˜κ·ΈλŠ” /var/www/uploads/flag.php에 μžˆμŠ΅λ‹ˆλ‹€.

 

μ‚¬μ΄νŠΈμ— 접속을 ν•˜λ©΄, uploads 폴더 μ•ˆμ— νŒŒμΌλ“€μ„ 확인할 수 μžˆλŠ” List νŽ˜μ΄μ§€μ™€

κ·Έ 파일의 λ‚΄μš©μ„ λ“€μ—¬λ‹€λ³Ό 수 μžˆλŠ” View νŽ˜μ΄μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. 

 

List νŽ˜μ΄μ§€μ—μ„œ hello.json νŒŒμΌμ„ ν΄λ¦­ν•˜κ²Œ 되면

 

이런 μ‹μœΌλ‘œ 파일의 λ‚΄μš©μ΄ 화면에 보이게 되죠

 

λ°˜λ©΄μ— μš°λ¦¬κ°€ μ•Œκ³ μ‹Άμ€ flag.phpλ₯Ό ν΄λ¦­ν•˜λ©΄ κΆŒν•œμ΄ μ—†λ‹€κ³  λœΉλ‹ˆλ‹€.

 

 

λ¬Έμ œμ—μ„œ μ œκ³΅ν•΄μ€€ μ†ŒμŠ€ μ½”λ“œλ₯Ό 뢄석해 λ΄…μ‹œλ‹€. 

 

 

 

μš°μ„  view.phpλ₯Ό ν™•μΈν•΄λ³΄λ‹ˆ μ •κ·œν‘œν˜„μ‹μ„ μ΄μš©ν•΄ "/flag"λΌλŠ” ν‚€μ›Œλ“œκ°€ 포함이 λ˜λŠ” μˆœκ°„μ— κΆŒν•œμ΄ μ—†λ‹€κ³  좜λ ₯ν•˜λ„λ‘ μŠ€ν¬λ¦½νŠΈκ°€ μ§œμ—¬ μžˆμŠ΅λ‹ˆλ‹€. 

 

이제 index.php λΆ„μ„ν•΄λ΄…μ‹œλ‹€. 

 

 

그럼 κ°€μž₯ λˆˆμ— λ„μ΄λŠ” 뢀뢄은 24~26번 쀄인데

νŽ˜μ΄μ§€λ₯Ό 이동할 λ•ŒλŠ” μ΄λ ‡κ²Œ GET μš”μ²­μœΌλ‘œ page 값을 λ°›μ•„ νŽ˜μ΄μ§€λ₯Ό λΆˆλŸ¬μ˜€λŠ” ν˜•μ‹μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 

 

이λ₯Ό μ΄μš©ν•˜λ©΄ ν”Œλž˜κ·Έ 값을 확인할 수 μžˆμ§€ μ•Šμ„κΉŒμš”? 

 

http://host1.dreamhack.games:17210/?page=../uploads/flag

URL을 μœ„μ²˜λŸΌ μˆ˜μ •μ„ ν•΄μ£Όμ—ˆμ§€λ§Œ

 

ν”Œλž˜κ·Έ 값이 λ³΄μ΄κΈ°λŠ” 컀녕 "can you see $flag?"λΌλŠ” 좜λ ₯λΏμ΄μ—ˆμŠ΅λ‹ˆλ‹€. 

 

λ‹€μ–‘ν•œ μ‹œν–‰μ°©μ˜€ 끝에 검색을 ν†΅ν•΄μ„œ 이 문제λ₯Ό ν‘ΈλŠ” 방법을 μ•Œμ•„λ‚΄μ—ˆμŠ΅λ‹ˆλ‹€. 

 

λ°”λ‘œ PHP Wrapperλ₯Ό μ΄μš©ν•˜λŠ” λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 

 

 

 

 

PHP Wrapperλž€?

 

URL μŠ€νƒ€μΌμ˜ ν”„λ‘œν† μ½œ, 

λž˜νΌλŠ”, μ‹€μ œ λ°μ΄ν„°μ˜ μ•žμ—μ„œ μ–΄λ–€ ν‹€μ„ μž‘μ•„ μ£ΌλŠ” λ°μ΄ν„° λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ΄ μ„±κ³΅μ μœΌλ‘œ μ‹€ν–‰λ˜λ„둝 μ„€μ •ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€.

이라고 ν•˜λŠ”λ°

 

 

PHP Wrapperμ—λŠ” λ‹€μ–‘ν•œ μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 

 

php://: λ‹€μ–‘ν•œ I/O 슀트림 μ•‘μ„ΈμŠ€ λ°©λ²•μž…λ‹ˆλ‹€. 

expect://: λŒ€ν™”μ  ν”„λ‘œμ„ΈμŠ€ 슀트림

zlib://: μ••μΆ• 슀트림

 

μ•„λ¬΄νŠΌ PHPλ₯Ό μ΄μš©ν•΄ νŒŒμΌμ„ ν•„ν„°λ§ν•œλ‹€λ˜μ§€, OS λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰μ‹œν‚€κ±°λ‚˜ ZIP 파일의 λ‚΄μš©μ„ 읽어 λ“€μ΄λŠ” λ“± λ‹€μ–‘ν•œ μ‘°μž‘μ„ ν•  μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

 

 

이번 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ”  php://filter λΌλŠ” 것이 ν•„μš”λ‘œ ν•˜λ©°, 

νŒŒμΌμ„ base64둜 λ³€ν˜•μ„ μ‹œμΌœ 우회λ₯Ό μ‹œν‚€λŠ” 방법을 ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 

 

 

 

λ‹€μ‹œ νŽ˜μ΄μ§€λ‘œ λŒμ•„μ™€ μ£Όμ†Œμ°½μ— 밑에 μ£Όμ†Œλ₯Ό μ μ–΄μ€λ‹ˆλ‹€.

 

/?page=php://filter/convert.base64-encode/resource=/var/www/uploads/flag

 

μ΄λŠ” /var/www/uploads/flag의 νŒŒμΌμ„ base64둜 μΈμ½”λ”©ν•˜μ—¬ include μ‹œν‚€λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€. 

 

 

 

κ·Έλ ‡κ²Œ νŽ˜μ΄μ§€ 이동을 ν•˜λ©΄ 정말 λ­”κ°€ base64의 ν˜•νƒœλ‘œ 좜λ ₯이 된 것을 보싀 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

이것을 또 디코딩을 μ‹œμΌœμ£Όμ–΄μ•Ό ν•˜λ―€λ‘œ, μ œκ°€ 자주 μ‚¬μš©ν•˜λŠ” λ””μ½”λ”© μ‚¬μ΄νŠΈλ₯Ό μ“°κ² μŠ΅λ‹ˆλ‹€.

 

https://www.base64decode.org/

 

Base64 Decode and Encode - Online

Decode from Base64 format or encode into it with various advanced options. Our site has an easy to use online tool to convert your data.

www.base64decode.org

 

디코딩을 ν•˜λ‹ˆ 정말 flag.php의 λ‚΄μš©μ΄ 잘 좜λ ₯이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

 

 

μ²˜μŒμ— Wrapperλ₯Ό 쓰지 μ•Šκ³ , κ·Έλƒ₯ flag 값을 확인할 λ•Œ

can you see $flag? 만 좜λ ₯이 된 μ΄μœ κ°€ μ΄κ²ƒμ΄μ—ˆκ΅°μš”.

 

 

 

 

 

μ°Έμ‘°: 

https://medium.com/@qingfro9/php-%EB%9E%98%ED%8D%BC-fbd6ff06babe

 

PHP 래퍼

μ›Ήν•΄ν‚Ή μ΄ˆλ³΄λΌμ„œ μ›Ήμš©μ–΄λ“€ λ“€μœΌλ©΄ 살짝 λ©˜λΆ•μ΄ μ˜¨λ‹€.. 그쀑 λ©”λͺ¨ν–ˆλ˜ PHP 래퍼?! λ­₯λ―Έ? μ‡Όλ―Έλ”λ¨Έλ‹ˆ? λͺ°λΌμ„œ μ •λ¦¬ν–ˆλ‹€!

medium.com

 

https://rootable.tistory.com/entry/PHP-wrapper

 

PHP wrapper

1. 이둠 (1) expect://  : system command μ‹€ν–‰ κ°€λŠ₯ ex) www.test.com?page=expect://ls (2) php://filter  : I/O μŠ€νŠΈλ¦Όμ„ λ‹€λ£¨λŠ”λ° μ‚¬μš©ν•˜λŠ” wrapper둜 encode/decodeλ₯Ό μ΄μš©ν•˜μ—¬ μ„œλ²„ λ‚΄ νŒŒμΌμ„ 읽을 수 있..

rootable.tistory.com

 

728x90
λ°˜μ‘ν˜•

'🏴CTF > DreamHack' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Dreamhack - μ›Œκ²Œμž„, file-download-1  (0) 2021.11.24
Dreamhack - μ›Œκ²Œμž„, XSS-1  (0) 2021.11.22
Dreamhack - μ›Œκ²Œμž„, pathtraversal  (0) 2021.11.21
Dreamhack - μ›Œκ²Œμž„, csrf-1  (0) 2021.11.21
Dreamhack - μ›Œκ²Œμž„, cookie  (0) 2021.11.21