
해당 문제를 풀기 위해서는, 파일을 다운 받은 후 서버 생성하기 버튼을 눌러줍니다.

파일을 다운 받은 후, 압축을 풀어줍니다.



코드를 살펴보면, 전체적인 코드는 xss-1과 동일하였으나, xxs-1 코드에서는 vuln에서 param을 return 하는 코드가 포함되어있었지만 xxs-2 코드에서는 vuln에서 param을 return 하는 코드가 제외되었다는 차이점을 알아볼 수 있었습니다.

또한 서버 생성하기 버튼을 클릭하여 홈페이지에 접속하였을 때, xxs-1 과 동일하게 vuln(xss) , memo , flag 총 3개의 페이지가 존재한다는 것을 알 수 있습니다.
혹시 다른 점이 있는지 알아보기 위해 각각의 페이지를 클릭해보았을 때,



memo와 flag는 xxs-1과 나타나는 화면이 동일하였지만, xxs-1과는 다르게 vuln(xss) 페이지에서 사용자의 입력 값을 그대로 출력하지 않는다는 차이가 존재한다는 사실을 알 수 있었습니다. xxs-1는 alert의 이벤트가 발생하였지만, xxs-2에서는 아무런 반응이 나타나지 않았습니다. 이러한 사실을 바탕으로, script를 이용한 공격이 통하지 않는다는 것을 파악할 수 있었고 그렇기에 xss-1과 구성은 같지만 더 이상 / vuln 페이지에서 <script>를 이용한 스크립트 삽입 공격이 어려울 것으로 보여 다른 방법을 통해 xxs-2 문제의 flag를 찾고자 하였습니다.
다른 방법으로는, <script> 태그를 쓰지 않고 자바스크립트 코드를 실행시킬 수 있는 xss script 우회, xss script 태그 우회 방법을 통하여 문제를 풀고자 하였습니다.
먼저, xss script 우회 방법을 사용하기 전에 xss-1 에서 사용하였던 요청을 한 번 이용해 보았습니다.

<script> location.href = "/memo? memo=" + document.cookie;</script>
입력 후에 memo 창에서 확인한 결과,

스크립트 문장이 정상적으로 실행되지 않았다는 사실을 알 수 있습니다.

또한 코드를 살펴본다면, 리턴 값이 param이 아니라 render_template 때문에 창이 뜨지 않는다는 것을 알 수 있습니다.
xss script 우회 방법으로 <iframe> 태그를 활용하여 자바 스크립트 코드를 실행하고자 하였습니다.
iframe 태그에 대해 설명하자면, iframe 태그는 inline frame의 약자로써 해당 웹 페이지 안에 다른 html 파일을 불러와서
삽입할 수 있는 기능을 제공합니다.
<iframe> 태그는 이와 같이 사용됩니다.
ex) <iframe src="javascript:실행할 자바스크립트 코드"></iframe>

그렇기에 <iframe src="javascript:location.href='/memo? memo='+document.cookie"></iframe>를 flag 창에 입력한 후

memo 창에서 출력 값을 보면 위와 같은 flag가 나타남을 알 수 있습니다.
#총 정리: script를 이용한 공격이 통하지 않았기에, <script> 태그를 쓰지 않고 자바스크립트 코드를 실행시킬 수 있는 xss script 우회, xss script 태그 우회 방법을 사용하여 문제를 풀었다. xss script 우회 방법으로 <iframe> 태그를 활용하였다.

문제 풀이 완료!
'Dreamhack' 카테고리의 다른 글
| [Dreamhack 문제 풀이] _ CSRF 2 (0) | 2023.11.10 |
|---|---|
| [Dreamhack 문제 풀이] _ CSRF 1 (0) | 2023.11.07 |
| [Draemhack 문제 풀이] _ xss-1 (0) | 2023.09.23 |
| [Dreamhack 워게임 문제 풀이] _ session-basic (0) | 2023.09.22 |
| [ Dreamhack 워게임 문제 풀이] _ cookie (0) | 2023.09.20 |