Incognito CTF 2021 little_register 출제 후기 본문

Pwnable/ETC

Incognito CTF 2021 little_register 출제 후기

disso1p1 2021. 9. 3. 14:02

 

 

 

 

외부에서 공식적인 CTF에서 운영진을 맡게된 것도 처음이였고, 

교내 미니 CTF에서 포너블 문제를 낸 경험 말고는 문제를 출제한 것도 처음이였다.

 

최근에 pwnable.tw 문제를 풀었고, 이번 little_register 문제를 만들 당시 푼 문제가 pwnable.tw babystack 이였는데, 그 문제가 stack dummy 를 활용한 문제였다. 그래서 문제를 만들 때 취약점을 stack dummy 를 활용하여 만들고 싶어 이 취약점을 터지게 유도했고, 회원가입으로 문제 컨셉을 잡고 구현했다.

 

문제 구현을 3일 동안 했고, 그 날이 8월 13일 이였다. 문제 제출은 8월 15일까지였고, 익스할 수 있는 시간이 얼마 없었다. 그래서 익스를 하면서 막히는 부분이 있으면 내 문제의 소스코드를 수정해서 내가 원하는대로 터지게 만들었다. 그래서 쉘을 따서 제출을 하긴 했다. 내가 억지로 코드를 수정한 부분은 마지막에 페이로드를 적을 만한 곳이 마땅치 않아서 특정 함수의 rsp 를 많이 늘렸다... 어셈코드를 ida에서 패치하면 ida에서 모든 함수 프롤로그 쪽을 정독하는 것이 아닌 이상 알기 힘들었고, 보통 정상적인 바이너리 파일들은 rsp를 필요한 양만 늘리기 때문에 내 인텐을 알아채 문제를 푸는 사람이 정말 없을 것이라고 생각했고, 너무 문제를 억지로 만든 느낌이 나서 욕도 많이 먹을 것 같았다.

 

나는 인코그니토에서 CTF 운영팀을 맡았기 때문에 도커와 ctfd 사이트에 있는 문제도 내가 관리 했다. 그래서 문제를 수정할 시간이 조금 더 있었다. 나는 'rsp를 늘리는 억지 문제가 아닌 그냥 컴파일을 했을 때의 따끈따끈한 그 바이너리 파일을 어떻게 익스를 할 수 있을까'에 대해 틈날 때마다 항상 생각했던 것 같다. pie leak 은 원래 할 수 있었는데, libc leak 을 같은 방법으로 응용해 풀 방법이 생각이 안 났다. 그러다 딱 대회 당일 날, 꿈에서 내 문제를 익스를 하는 법을 알려줬다. (ㄹㅇ임) 대회시작 시간은 오후 6시였고, 12시에 일어나자마자 밥 먹고, 문제를 원상태로 수정하고, 익스를 했다. 정확히 오후 6시 4분에 쉘을 땄고, 바로 도커와 ctfd 사이트에 문제를 올리고, 리모트로 쉘 한 3번은 따본 다음에 7시 좀 넘어서 문제를 올렸다.

 

조금 아쉬웠던 점은 문제가 늦게 올라온 것도 있고, 포너블 문제 중에 뒤쪽에 있어서 문제 어필을 많이 못해 문제 자체를 아예 안 보신 분들이 많은 것이다. 내 문제는 사실 취약점 자체가 쉽고, 찾기도 쉬운데, 이 취약점으로 어떻게 시나리오를 짜나가야 하느냐가 관건이였다. 근데 내 문제가 노솔브인 이유가 이것초자 내가 억지 문제를 낸 거라는 생각이 크게 들었다. 문제 출제 경험, CTF 경험이 많은 게 아니라 좋은 문제를 내려고 해도 한계가 있었다ㅜㅜ 

 

 

Write up 링크 - https://round-wisteria-0f8.notion.site/Incognito-CTF-2021-Pwnable-little_register-Write-up-bcd65753a1ad4e718ac34652cb368266

 

 

 

'Pwnable > ETC' 카테고리의 다른 글

Pwntools 기능  (0) 2020.07.08
헷갈리는 것들 정리  (0) 2020.03.05
pwntools 연습  (0) 2020.02.21
시작  (0) 2020.01.30
Comments