[Codegate 2018] WEB – rbSql

해당 문제는 소스를 공개하는 오픈소스 형태의 문제입니다. 가장 먼저 문제 페이지에 접속해보면..

ㅗㅜㅑ… 익숙한 페이지가 눈 앞에 나타납니다. 최근 몇년간의 국내 CTF를 참가해 웹 분야의 문제를 풀어보았다면 많이 봤을 크리스탈입니다. 딱 봤을 때 있는 기능이라면 Photo와 M/V가 있으며, Join과 Login 기능이 존재합니다. 문제 이름에 SQL이 들어가기 때문에 SQL Injection이라고 생각되지만, 자세한 것은 소스코드를 확인해봐야 알 것 같습니다.

문제 설명에 첨부되어있는 파일을 다운받아 압축을 해제하면 크게 두가지 메인 소스코드로 나뉘어져 있다는 것을 알 수 있습니다.

index.php와 dbconn.php입니다.

일반적으로 dbconn.php에는 해당 웹서버에서 사용하고 있는 데이터베이스에 대한 설정(아이디, 패스워드, 호스트, 포트, 사용할 DB명 등)을 담고 다른 페이지에서 import하여 사용하는 형태이지만, 이 문제는 달랐습니다. rbSql이라는 제목이 허투루 나온 것이 아니라 출제자 본인이 직접 생각하여 구현한 데이터베이스 형태인 것 같습니다. dbconn.php 내에는 저장할 데이터에 대한 파싱 방법, 패킹 방법, 그리고 데이터를 삽입/삭제/조회할 수 있는 기능들을 구현해 놓았습니다.

다음은 index.php와 dbconn.php의 소스코드입니다.

index.php