문제 설명 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 그림) 각 노드에는 그 곳에 위치한 빌딩의 번호가 붙여져 있다. 또, 가장 마지막 레벨을 제외한 모든 집은 왼쪽 자식과 오른쪽 자식을 갖는다. 상근이는 도시에 있는 모든 빌딩에 들어갔고, 들어간 순서대로 번호를 종이에 적어 놓았다. 한국으로 돌아온 상근이는 도시가 어떻게 생겼는지 그림을 그려보려고 하였으나, 정확하게 기억이 나지 않아 실패했다. 하지만, 어떤 순서로 도시를 방문했는지 기억해냈다. 가장 처음에 상근이는 트리의 루트에 있는 빌딩 앞에 서있다. 현재 빌딩의 왼쪽 자식에 있..
분류 전체보기
문제 설명 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. - 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상..
우선 xss-2 문제 설명은 다음과 같이 되어있는 것을 볼 수 있다. 문제 페이지에 접속해보면 아래와 같이 페이지가 구성되어 있는 것을 볼 수 있다. 앞서 xss와 관련하여 풀었던 드림핵 문제와 비슷한 형태를 띄우고 있다. 우선 첫번째 카테고리인 'vuln page'에 들어가보면 별 다른 내용은 없었지만 주소 창에 param 다음에 스크립트 구문을 통해 alert(1)을 사용하고 있는 것을 볼 수 있다. 메모 카테고리에서는 이전 문제들과 동일하게 해당 카테고리에 접속할때마다 hello 문구가 한줄씩 추가되고 있는 것을 볼 수 있다. flag 카테고리에서는 아래와 같이 param 뒤에 값을 입력할 수 있는 공간이 있다. 이 문제에서도 입력하는 값을 통해 플래그 값을 얻고, 이를 memo 카테고리에서 확인할..
해당 문제에 대한 정보는 다음과 같다. 접속 정보를 통해 문제 사이트를 확인해보면 아래 이미지와 같은 화면이 나왔다 맨 처음에 vuln(xss) page를 클릭하면 아래와 같은 경고창이 나온다. memo 버튼을 클릭하니 hello 문구가 나왔다. 그런데 여기서 hello 버튼을 누르때마다 출력되는 hello 값이 하나씩 증가하는 것을 볼 수 있다. flag를 클릭하니 다음과 같은 화면을 볼 수 있었고 아마 저기 빈칸에 어떤 값을 넣고 제출하면 플래그 값이 나올것 같다. 해당 페이지에 대한 내용은 다음과 같다. 1. xss 페이지 param을 인자 이름으로 하여 get을 통해 받아오고 그 값을 return 한다. 2. memo 페이지 memo_text를 global 변수로 설정하며 그 값을 (memo 파라..
우선 문제 설명을 보면, 문제 이름에서도 볼 수 있고, 설명에서도 볼 수 있듯이 DOM XSS에서 실습하는 문제라고 되어있다. 그럼 본격적으로 문제 풀이를 시작하기 전에 DOM XSS가 무엇인지 알아보자. DOM (Document Object Model) HTML의 문법은 태그의 집합으로 구성되어 있고 이러한 태그들은 아래 사진과 같이 트리 구조로 객체가 형성되는데 이러한 트리 구조 집합을 DOM 구조라고 한다. DOM 구조에 접근하기 위해서는 JavaScript와 같은 스크립트 언어를 사용해야 DOM 구조에 접근할 수 있다. Ex. Document.write, Document.cookie 등 DOM Based XSS DOM 구조를 이용하여 요소들을 수정하거나 추가하는 등 동적 행위를 할 때 접근하는 J..
우선 문제는 아래와 같이 구성되어있다. XSS-GAME의 이전 문제들과 동일하게 경고창을 통해 문제를 해결할 수 있는 것으로 보인다. 메인 화면에서 sign up 버튼을 누르면 아래와 같은 화면으로 넘어가는 것을 볼 수 있다. 이메일을 입력하라는 칸이 나와서 해당 칸에 swlug를 입력해보고 next 클릭 했더니 가입에 성공했는지, 아래와 같은 창이 뜨고 몇초 뒤에 메인 화면 즉, 첫 화면으로 돌아가는 것을 볼 수 있었다. 실제 이메일 주소를 입력해도 동일한 결과가 나타났다. 그럼 본격적으로 문제를 해결하기에 앞서, 이 문제의 핵심인 reflected xss 공격에 대해 조금 알아보자. Reflected xss 요청 메시지에 입력된 스크립트 코드가 즉시 응답 메시지를 통해 출력되는 취약점으로, 입력된 스..