
xss - 1 문제를 풀기 위해서는 문제 파일을 다운로드하고 서버 생성하기 버튼을 클릭해줘야 합니다.

다운 받은 문제 파일의 압축을 풀어줍니다.


문제의 코드 파일을 볼 수 있습니다.
코드 파일을 통해, read_url 함수의 선언은 read_url(url, cookie={'name': 'name', 'value': 'value'})이며,
flag()에서 read_url은 read_url(xss, {'name': 'flag', 'value': FLAG})로 작성되어 있다는 사실을 알 수 있습니다.


생성된 서버를 클릭하면 해당 화면이 나타납니다,
접속 가능한 페이지가 총 3개이기에, 각각의 페이지를 클릭해 보면

첫 번째로는, 필터링이 없어서 xss가 가능한 vuln 함수 page 화면이 나타납니다. xss 파라미터로 입력된 값을 전송하면, 페이지 응답 시 해당 변수가 페이지 내 삽입됩니다. 위 과정에서는 xss 파라미터 값으로 스크립트 구문이 삽입되어, 페이지 응답 시 해당 스크립트가 동작하게 됩니다.

두 번째로는, memo 페이지 화면이 나타납니다. memo 함수에 대해 설명하자면, memo 함수는 flag에 입력한 값이 성공 시 출력되는 페이지입니다. memo 파라미터로 입력된 값을 전송하면 페이지 응답 시, 해당 변수가 페이지 내 삽입된다는 점에서 xss 페이지와 유사한 형태를 가지고 있습니다.

세 번째로는, flag 화면 페이지가 나타납니다. flag 함수는 스크립트 언어를 기입하여, 공격하는 페이지에 해당합니다.

입력하면 출력되는 값이 궁금하였기에, test라는 글자를 입력해 보았는데

입력 시 위와 같은 화면이 나타난다는 사실을 알 수 있었습니다.

flag 페이지에서는 read_url 함수를 실행시키며 함수 정상 동작 시 "good" 알람창을 띄운다는 사실을 알 수 있습니다. 또한 real_url 함수를 살펴보면, 해당 함수에서 쿠기가 생성되고 domain의 번호가 (127.0.0.1:8000)이라는 것을 알 수 있습니다.
따라서 domain : (127.0.0.1:8000)에서 확인을 하는 과정이 필요합니다.
*read_url 함수의 실행 과정
read_url 함수가 실행되면
1) 첫 번째로는: driver.get('http://127.0.0.1:8000/')으로, 로컬호스트 환경에서 웹 페이지를 접속하는 과정을 거칩니다,
2) 두 번째로는: driver.add_cookie(cookie)으로, 접속한 웹 페이지에 매개변수로 받아온 cookie를 추가합니다.
3) 세 번째로는 : driver.get(url)으로, 매개변수로 받아온 xss 값을 이용하여 xss 페이지에 접속합니다.
정리하면 flag 페이지에서 xss 값을 입력 후 전송하면, 로컬호스트 환경에서 웹 페이지 접속 후, FLAG 값을 쿠키로 추가하며 사용자로부터 입력받은 xss 값을 이용하여 xss 페이지를 실행하는 것입니다.
따라서 flag 페이지에서 xss 파라미터를 조작하여 로컬호스트 환경에서 FLAG가 적힌 쿠키 값이 추가되면, 해당 쿠키값을 memo 페이지의 매개변수로 전달하고 memo 페이지에 FLAG를 작성하도록 하여서 해당 문제에 대한 flag를 얻고자 합니다.

더불어 check_xss 함수를 보면, 입력한 url을 참고한다는 사실을 알 수 있습니다.
또한 문제 코드를 통해 알 수 있는 것처럼, flag 함수에서 check_css 함수로 넘어가게 됩니다.

memo 페이지에 flag가 삽입된 로컬의 쿠키 값을, 인자 값으로 하여 작성하는 것으로 이해할 수 있습니다.


로컬호스트에서 flag를 가져와서 memo 페이지로 쓰는 구문을 작성하고, 제출하기를 누르면 문제를 해결할 수 있습니다.
입력 란에 <script> location.href="http://127.0.0.1:8000/memo?memo=hello"+document.cookie;</script>라는 전체 경로를 입력하면 우리가 찾고자 하는 flag를 발견할 수 있습니다.

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