[WHS 2nd CTF] random_box Writeup

Hojin Han·2024년 5월 3일

[CTF & Wargame Writeups]

목록 보기
1/1

본문은 WHS 2nd 반대항전 CTF, Web 부문의 2번째 문제 random_box에 대해 작성된 writeup이다.

가정

설명 자체가 “수많은 랜덤박스 중 하나의 박스에는 Flag가 있음”을 명시하므로, 박스들을 하나하나 클릭해 열어 보기만 하면 플래그를 확인할 수 있을 것이다.


onClick 이벤트에 어떤 요청이 발생하는지 확인하기 위해 박스를 클릭해 보았더니 위와 같은 alert창이 팝업되며, 창 내부의 내용은 같다는 것을 확인할 수 있었다(꽝입니다!).

따라서 1번부터 1000번까지 모든 박스를 자동으로 클릭해서 alert 창을 띄우고, “꽝입니다!”가 아닌 메시지가 출력되는 박스의 인덱스, 그리고 해당 메시지를 띄워 주는 코드를 작성하였다.

웹사이트의 구조상 앞부분의 URL은 일정하고 클릭하는 박스의 넘버에 따라 ? 뒤의 box 파라미터에 전달되는 값이 달라지는 형식이었다.

따라서 url 변수에 URL 값을 넣어 두고 반복문을 이용하여 박스 넘버가 올라갈 때마다 ?box= 뒤에 업데이트된 넘버를 합치는 식으로 요청하였다.

완성된 코드는 아래와 같다.
(selenium, webdriver_manager가 install된 상태여야 한다)

Selenium을 이용한 동적 크롤링으로 alert 창의 메시지를 확인 후, “꽝”이라는 문자열을 포함하지 않을 경우 해당 박스의 인덱스와 메시지를 출력하도록 설정하였다.

결과

박스의 인덱스와 메시지가 출력되었고, 혹시 몰라 직접 해당 박스를 클릭해서 팝업창을 확인해 봤더니

위 사진과 같이 whs{...} 형식으로 된 flag를 획득할 수 있었다.

profile
Korea Univ., Dept. of CS & E

0개의 댓글