DEFCON CTF 2018 exzendtential-crisis
분석
해당 문제는 기본적으로 소스를 제공하는 문제이다. 여기에서 보면 알 수 있듯, 우리는 flag.php 의 contents를 읽어야 플래그를 획득할 수 있다.
http://d4a386ad.quals2018.oooverflow.io/essays.php 여기에서 Essays를 작성할 수 있고, 현재 자신이 작성한 문제를 볼 수 있다. 이런 식(http://d4a386ad.quals2018.oooverflow.io/essays.php?preview&name=601c1c69cccb89b6651d)으로 파일을 읽을 수 있는데, name 값에 조금만 퍼징을 해보면 알겠지만, http://d4a386ad.quals2018.oooverflow.io/essays.php?preview&name=../../../../../../../etc/passwd 이런 식으로 Local File을 read할 수 있는 취약점이 있다.
대회 중의 삽질
취약점
mydb.so 파일을 보면 j_get_user_id 라는 함수를 호출해서 DB에서 뭔가 값을 가져오는 것을 볼 수 있다.
해당 함수는 get_user_id 로 점프한다.
그리고 아래에 조금 간단한 소스가 있다. 원래 v5로 되어있을 table 변수에는 users 라는 테이블명이 들어간다. 왜 대회 때 굳이 출제자가 테이블명을 변수에 넣어놨을까 생각을 조금이라도 해보았다면 본선 진출이었는데...ㅠㅠ
snprintf를 통해서 sql 을 완성시킨다. 여기에서 table과 username 값을 보자.
생각보다 멀지 않은 곳에 sql 과 table 변수가 존재한다.
떨어진 길이는 112 byte이다.
Exploit
이번 문제를 통해서 웹너블이 재밌다는 것을 처음 알았다.
'write-ups > CTF' 카테고리의 다른 글
H3X0R CTF geek test write up (0) | 2018.06.17 |
---|---|
DEFCON CTF 2018 Easy Pisy write up (0) | 2018.05.16 |
WPICTF 2018 Write up (0) | 2018.04.18 |
HITB-XCTF GSEC CTF 2018 Quals upload (web) Write up (0) | 2018.04.14 |
2018 코드게이트 본선 후기 - 2018 codegate quals (0) | 2018.04.04 |