글쓴시점에 아직 대회가 진행중이라 대회가 끝나고나면 해당글은 공개로 돌리도록 하겠다.
문제에 들어가보면 간단한 게시판 기능이 있는 사이트다. 문제자체는 크게 어렵지 않았는데 SQLI가 두군데서 터지는데 실제 문제풀때 쓸 부분을 나중에 찾고 먼저 찾은 Insert based Sql injection에서 시간소모를 많이했다. 회원가입할때 사이트입력하는 필드에서 SQLI가 터진다. time based insert sql injection으로 데이터를 뽑아올 수 있는 상황이었는데 코드짜서 할려고 만들다가 귀찮아서 딴방법없나하며 뒤적거렸는데 유저정보 조회할 때 union sqli가 터져서 이쪽을 좀 더 파봤다.
그냥쭉 디비털어서 플래그 가져오면 되겠다 했는데 information이 필터링당하고 유저도 root가 아니라 mysql.innodb_table_stats 등의 root일 때 테이블명 구할 수 있는 케이스도 적용이 안되는 상황이었다.
여기서 살짝 멘탈나갔었는데 이것저것 보다가 요걸 발견했다.
admin으로 가입할 때 사이트에 네이버주소를 적었었는데 해당 계정정보를 조회할때 302 응답값이 출력된게 보였다. 여기서 내가입력한 사이트로 뭔가 요청을 한다는걸 알 수 있었고 SSRF구나 하고 감이 왔다.
문제에서 index.php를 읽으래서 180%20union%20select%201,2,3,4,'file:///proc/self/cwd/index.php',6 요런식으로 읽으려고 했더니 php가 필터링당하고 있었다.
요런식으로 간단히 우회해서 플래그를 구했다.
'CTF > Writeup' 카테고리의 다른 글
Pragyan CTF 2018 Authenticate your way to admin (150pts) (0) | 2018.03.04 |
---|---|
Pragyan CTF 2018 El33t Articles Hub (200pts) (0) | 2018.03.03 |
Truststealth CTF 2018 Read Flag Revenge (TRUST) 500 (0) | 2018.03.02 |
Truststealth 2018 archive.is (TRUST) 500 (0) | 2018.03.02 |
SECCON Online CTF 2016 Anti-Debugging (0) | 2018.02.26 |