One_Blog

2023 KOSPO CTF 후기 + 라이트업 본문

후기,라이트업

2023 KOSPO CTF 후기 + 라이트업

0xOne 2023. 8. 4. 19:33
728x90

문제 .. 를 보고 직접 분석도 하고, 스샷도 찍고 할려고 했는데 ..

 

문제 인스턴스가 대회 끝나고 다 내려가 버렸다.

 

어쩔 수 없이 기억에 의존할 수 밖에 없다 ㅠㅠ

 

사이트 좀 유지시켜 주세요.. 라업 잘 쓸게요..

 

우선 KOSPO 대회의 경우, 이번엔 오전 10시부터 오후 18시까지 대회가 진행 되었다.

 

시간도 CCE마냥 엄청 조금 주는데, 심지어 라이트업까지 쓰게 시켰다..

 

처음엔 엄청 시간이 촉박하다 라고 생각했는데,

 

풀면서 문제 난이도를 보니, 이렇게 시킬만 하다고 생각되었다. 

 

Rev, Pwn 등의 난이도는 안풀어봐서 잘 모르겠지만, Web은 일단 무난하게 쉬운 편이었다. 

 

그럼에도 웹 하나를 못풀었는데 ... 그 이유는 나중에 설명하겠다.

 

KOSPO의 경우, Web, Pwn, Rev, For와 같이 굉장히 다양한 분야의 문제가 출제되었는데, 특이하게도

 

기반시설 문제, 보너스 문제 등 일반적인 CTF에선 보이지 않는 유형의 문제도 함께 출제되었다.

 

기반시설 문제의 경우, UNIX, Window와 같은 운영체제 관련 지식?을 물어보는 느낌의 문제였다.

(ex) /etc/shadow파일을 주고, 분석을 시키는 느낌..?)

 

보너스 문제는 그냥 구글링해서 풀 수 있는 문제들로 이루어져 있었다.

 

난이도가 낮아서 그런지, 기반시설 및 보너스 문제 모두 전공 문제에 비해 점수 배점이 낮았으며, 솔버도 많았다.

 

대회 일정이랑 가족 여행이 일정이 겹쳐버려서, 가족 여행 끝나고 돌아오는 자동차 안에서 열심히 대회를 뛰었는데 ..

 

결과는 아쉽게도 5등을 하고 말았다. (4등까지 시상)

 

이쯤에서 끝내고, 이제 웹 라이트업을 간단하게 적어보도록 하겠다.

 

[문제 1_Path Traversal(이름 기억 안남)]

 

이건 내가 푼 문제는 아니고, 팀원이 푼 문제였다.

 

name 파라미터를 통해 Path Traversal가 발생하는 문제 였는데,

 

취약점을 통해 ../templates/flag 파일을 leak 하면 되는 문제였다고 한다.

 

[문제 2 _ Broken Access Control]

 

PHP를 이용해 구현된 간단한 게시판 서비스 였고, Admin이 쓴 글을 읽으면

 

Flag를 얻는 간단한 문제였다.

 

게시판 글 검색 기능에서 Union SQL Injection 취약점이 발생해서,

 

Admin글의 content를 leak하면 되는 문제였다.

 

* 내가 기억하는 Payload *

' union select content,2,3,4,5,6,7 from board -- 

 

[문제 3 _ Mobile Auth]

 

이 문제 같은 경우, 딱히 취약점을 쓰는 문제는 아니었다.

 

폰 번호와 이름을 입력하면 선물 코드를 전송해주는 웹 서비스 였는데,

 

어떤 번호와 어떤 이름을 입력하더라도 선물코드가 모두 소진되었다는 메시지만 받을 수 있었다.

 

그래서 뭔가 추가적인 힌트가 없나 하고 웹 사이트를 샅샅히 살펴봤는데,

 

vipcode를 번호, 이름과 함께 전송하면 선물코드를 무조건적으로 지급한다는 주석이 있었다.

 

vipcode는 웹 서비스에 폰 번호, 이름과 요청을 보내면 돌아오는 패킷 데이터에 포함되어 있었고,

 

그렇게 vipcode를 획득해 요청을 보냈는데, 이번에도 아무리 요청을 보내도 선물코드가 모두 소진되었다는 메시지만 받을 수 있었다. 

 

vipcode를 분명 알맞게 보냈는데, 선물코드가 안오길래 뭐가 더 숨겨져 있나 했는데 ... 

 

선물코드가 md5로 Hash화 되어 있었다.

 

레인보우 테이블 기반으로 Decrypt 해주는 사이트 찾아서 선물코드 복호화해줬고, 다시 보내고 나니

 

정상적으로 플래그를 받을 수 있었다.

 

[문제 4 _ Detective]

 

이 문제의 경우 처음에 서버 액세스 로그와 URL을 줬다.

 

로그를 보고 서버 취약점을 패치했다는 설명과 함께 이행점검을 해달라는 문제 였는데,

 

이전 공격자가 올려놓은 웹 쉘이 그대로 서버에 남아있는 문제가 있었다.

 

웹쉘로 접근한 후, cat을 통해 flag를 읽을 수 있었다.

 

[문제 5 _ SSRF]

 

이게 내가 유일하게 못푼 문제 였는데.. 문제 2와 똑같이 만들어져 있었고, 프로필 기능이 추가되어 있었다.

 

검색 기능에서 Sqli 취약점 터지길래 거기서 익스해볼려다가 DB 정보 다 뽑아내도 아무것도 없길래

 

대체 뭐 어떻게 하는거지 싶어서 프로필 쪽으로 접근해보았다. 프로필쪽에 패스워드 변경 기능과 프로필 변경이라는 기능이 있었는데,

 

솔직히 너무 게싱이라고 생각된 게 프로필 변경에 뭐 아무런 설명도 없이 그냥 입력만 받고 그걸 토대로 프로필을 변경해주고 있었다.

 

나중에 알고보니 프로필 변경 입력란에 URL 주소를 삽입하는 거였고, 거기서 file:///flag 를 통해 flag를 leak하는 문제였다 ㅠㅠㅠ

 

솔직히 거기에 URL 넣는 것만 알았어도 100% 풀었을 문제인데, 아무런 설명도 없이 입력만 받게 해놔서 끝까지 sql로 접근한 게 

 

실수였다 ㅜㅜ 그렇게 아깝게 한문제를 풀지 못하고 5등을 하게 되었다.

 

좀 아쉽지만 서버 기능을 잘 파악하자는 교훈을 얻을 수 있었다.

 

게싱 싫어용