김승현

[Dreamhack : Web] DOM XSS 본문

Web/Dreamhack : Web

[Dreamhack : Web] DOM XSS

kshind 2023. 3. 4. 18:17

문제

DOM XSS를 이용해서 푸는 문제이다.

 

풀이

접속하면 이렇게 HOME 메뉴가 있고 vuln page, memo , flag가 있다. vuln으로 가보자.

이렇게 생겼다. memo와 flag는 한 번에 보자.

평소에 보던 생김새와 거의 변함이 없다. 소스코드도 거의 변함이 없는데 특히 csp bypass 문제와 거의 같아서

분석은 넘어가려고 한다... ㅎㅎ

그나마 중요하다면 여기 csp 내용이 그나마 중요한데 일단 있다는 거 정도만 기억해두도록 하자.

다운한 파일 중에 vuln.html이 있었는데 그것도 확인해 보자.

잘보면 name 변수에 대해 location.hash.slice(1)} is my name !이라는 코드가 있다. 잘 생각해보면 vuln 페이지에서 비슷한 내용을 봤는 걸

떠올릴 수 있다.

동그라미 친 부분과 내용이 같은 걸 알 수 있다.

location.hash.slice(1) 코드도 강의를 보면 나왔지만 #뒤의 내용을 출력하는 그런 방식이었는데 지금 보면

dreamhack is my name !인데 # 뒤의 내용도 dreamhack인 걸 봐선 강의 내용처럼 된 것 같다. 저 dreamhack 위치에 document.cookie를 이용해서 flag를 얻어보자.

<script id="name"></script>#location.href='/memo?memo='+document.cookie//

뒤에 //이 붙는 이유는 아래 사진에서 볼 수 있듯이 #의 내용 뒤에 is my name !이 붙는데 //로 주석처리를 해서

그냥 스크립트로서 사용하기 위해서 붙게 된다.

 

개념을 이해만 좀 했다면 생각보다 간단하게 풀 수 있는 문제였던 것 같다. 이걸로 dreamhack 로드맵 끝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!