# 문제링크 : https://dreamhack.io/wargame/challenges/28
문제 파일
웹페이지
xss 취약점을 이용한 문제인 듯 하다. xss 취약점은 "게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격."이라고 볼 수 있다.
vuln(xss) page를 클릭해보면
이런 팝업이 뜨고
memo를 누르면
이런 창이 뜨고
flag를 누르면
이런 창이 뜬다.
코드를 살펴보자.
코드를 살펴보니 아래와 같이 정리할 수 있다.
- 취약한 엔드포인트 설정:
- /vuln 엔드포인트는 사용자로부터 파라미터를 받아서 그대로 반환합니다. 이렇게 하면 사용자 입력이 그대로 HTML에 삽입되므로, 이러한 입력을 신뢰하지 않고 필터링하지 않는 경우 XSS 공격에 취약할 수 있습니다.
- XSS 공격을 수행하는 엔드포인트 설정:
- /flag 엔드포인트는 POST 요청을 받습니다. 클라이언트가 param 파라미터를 제출하면, 이 값이 check_xss() 함수로 전달됩니다.
- check_xss() 함수는 주어진 파라미터를 이용하여 특정 URL을 생성합니다. 그런 다음 Selenium을 사용하여 웹 브라우저를 실행하고 해당 URL을 방문합니다.
- 이렇게 함으로써 param에 주입된 스크립트가 실행될 수 있으며, 만약 해당 스크립트가 악의적이라면 XSS 공격이 성공할 수 있습니다. 이러한 공격이 성공하면, flag.txt 파일의 내용을 플래그로 반환합니다.
- 메모 기능:
- /memo 엔드포인트는 GET 요청을 받아 사용자로부터 받은 메모를 저장합니다. 이 메모는 전역 변수인 memo_text에 추가되며, 사용자에게 보여줄 때 이를 HTML 템플릿을 사용하여 렌더링합니다.
이 두 부분이 주요한 듯 싶다.
flag 부분에 /falg 경로의 파라미터를 입력하면 된다.
/memo 부분에 플래그 값이 출력되도록 해야하는데 그럴려면 <script>location.href="http://127.0.0.1:8000/memo?memo=hello"+document.cookie;</script> 값을 입력해주어야 한다. /memo 경로에 쿠키 값을 입력한다는 의미이다.
이렇게 입력을 해주면
이런 팝업창이 뜨고
memo 페이지로 가보면
이렇게 플래그가 출력된 걸 볼 수 있다.
문제 해결!
'문제풀이' 카테고리의 다른 글
[Dreamhack] Basic_Forensics_1 문제풀이 (0) | 2024.02.20 |
---|---|
[Dreamhack] baby-linux 문제풀이 (0) | 2024.02.20 |
[Dreamhack] phpreg 문제풀이 (1) | 2024.01.30 |
[Dreamhack] 64se64 문제풀이 (1) | 2024.01.30 |
[Dreamhack] ROT128 문제풀이 (0) | 2024.01.23 |