In Univ (2022-2)
3 min read
1. 2022-2
RE. Univ
인턴 생활을 끝내고 대학으로 복귀했습니다.
이 때부터 대부분의 과목이 오프라인 수업을 진행했습니다. 정책 상 마스크는 쓰고 있어야 했지만 그래도 대부분 교실에서 수업을 들었던 것 같네요. 저는 마스크 쓰는 걸 힘들어해서 수업 듣는 게 쉽지 않았습니다. 숨도 막히고 오래 쓰고 있으니 좀 어지럽더라고요.
그래도 이 시기엔 마스크 규정이 과거보다 많이 완화되어서 다행이었습니다. 2021년도 규정대로 학교 생활을 했으면 진짜로 답답해서 쓰러져 버렸을 지도 몰라요.
제가 활동하던 시기 중 'PLUS가 가장 활성화되었던 시기가 언제냐?'라고 물어보면 2022년도 일 겁니다. CTFtime을 보면 2020-2024 중 2022년도가 압도적이죠. 17학번(physicube)부터 22학번(aplace)까지 모두 뛰던 재미있는 해였습니다.
zer0pts나 UIUCTF, SECCON CTF Quals에서도 나쁘지 않은 성적을 거뒀던 걸로 기억합니다.
개인적으론 CTF를 많이 뛰며 저점 방어 능력을 기른 해였습니다. 저는 소위 '고점충'에 가까운 성향을 가지고 있어서 저점 방어가 잘 안되는 편인데, 무식하게 많은 양을 때려 박으면 이런 사람도 어느 정도 방어가 된다는 사실을 깨달았습니다. 언젠가 리겜할 때도 적용해 봐야겠습니다.
2022년도까지도 고난도 문제로 Kernel과 V8이 한 두 문제 나오던 시기였습니다. 마침 회사에서도 해봤겠다, Kernel스러운 문제만 나오면 일단 붙잡고 봤습니다. V8은 과거 candymate 선배가 수업한 자료를 바탕으로 공부했습니다. 당시 막 pointer compression 같은 게 도입되던 시기로 기억하는데, 이미 자료가 있었던 덕분에 객체 구조와 익스플로잇 방법을 편하게 배울 수 있었습니다.
그렇게 모르는 걸 조금씩 알게 되었습니다. 새로운 걸 배우기 위해 공부했다기보단 CTF에서 높은 등수를 받기 위해 공부하는, 생존 공부라고 해야 할까요. 야매로 공부했지만 당시 전 'CTF만 풀 수 있으면 장땡'이란 마인드였기에 프로그램의 구조나 원리보단 취약점과 익스플로잇을 중심으로 공부했습니다.
이렇게 여러 종류의 시스템 해킹 공부하며 느낀 건 컴퓨터라는 큰 틀에서 보면 모든 분야가 근본적으론 차이가 없다는 점입니다. 결국 해킹이란 로직 속에서 오류를 잡아내는 작업인데 그 오류를 어느 레벨 혹은 어느 파트에서 잡아내느냐에 따라 이름이 달라질 뿐이었습니다. 커널에서 버그를 찾으면 커널 버그고, V8 코드에서 버그를 찾으면 V8 버그일 뿐이지 버그의 메커니즘이 특별한 건 아니었습니다.
다만 버그를 찾기 위해 모든 Kernel코드나 V8의 코드를 전부 볼 수 없기 때문에 추상화해서 이해해야 하는 부분들이 존재하고, 이 때문에 진입장벽이 생기는 건 어쩔 수가 없었습니다. 이 뒤론 코드에서 단순히 버그 패턴을 찾기보단 지금 보고 있는 코드의 구조를 추상화해서 이해하고 그 다음에 버그를 찾으려고 노력했던 듯 합니다. ELF 문제를 풀 땐 이렇게까진 안 해도 되지만 Kernel과 V8 같이 코드 베이스가 큰 경우 저런식으로 접근하지 않으면 버그를 이해하는 것조차 어렵다는 걸 여러 문제들을 풀며 절실히 느꼈기 때문입니다.
이렇게 보니 많은 양을 때려 박는 과정에서 효율적인 방법을 찾게 된 것 같아, 참 아이러니하네요. 효율적인 방법을 알기 위해 비효율적인 방법을 택해야 했던 것 같아 보여서 말입니다. 누군간 이렇게 하지 않아도 깨달을 수 있었겠죠? 저는 아니었지만... 일단 잘 모르겠다면 많은 문제를 풀어보는 게 도움이 되지 않을까 싶습니다 ㅋㅋㅋ
Codegate
처음으로 Codegate 대학부 본선에 가봤습니다. beta, helloworld, qwerty, stfort로 참여했고, 선배들 버스에 힘입어 본선에 무사히 안착했습니다.
예선에는 죽을 좀 쒔는데 본선에는 폼이 꽤 괜찮았습니다. O솔 문제 빼곤 포너블도 다 풀었고 다른 선배들도 자기 분야에서 굉장히 문제를 잘 풀어서 입상도 노려볼 만 했습니다. 문제라고 하면 저희 팀에 크립토가 없다는 점이었는데, 전통적으로 Crypto가 변별력이 있었던 적은 많이 없었으니 괜찮지 않을까 생각했습니다.
너무 오만했던걸까요?
2022년도는 예외였습니다. 크립토를 반드시 풀었어야만 했어요.

그래서 결과는? 따란, 4등이랍니다. 아오.

대회 끝나고 그냥 잠이나 퍼질러 잤습니다. 당시엔 다른 팀에 아는 분들도 없어서 인사도 제대로 못 드렸네요. 지금이라면 꽤 계실꺼라 '축하한다'고 인사라도 드렸을 것 같은데, 당시에는 절 아는 분들도 없고 제가 아는 분들도 딱히 없었어서 그냥 동아리 사람들과 잡담하다 포항으로 돌아왔습니다.
솔직히 슬프긴 하지만 어쩌겠어요, 잘했으면 1등이었겠죠?
억까를 당한 것도 아니었으니 변명의 여지가 없죠. 명백한 실력 이슈였습니다.
PS
당시엔 대학교 참여 팀 당 슬롯이 있었기 때문에 POSTECH에서 2-3등 정도 하면 본선에 갈 수 있었습니다. 딱 그 정도를 목표로 하고 참여했는데 운 좋게도 2등을 해서 다음 리저널도 참여할 수 있었네요. 같이 뛰었던 poro, soda에게 감사합니다. 당시엔 poro 버스에 가까워서 크게 기억나는 게 없었습니다. 공부를 많이 하지도 않아서 딱 코포 민트-블루 정도의 실력이었던 것 같네요. 그냥 옆에서 구현할 때 막히는 걸 조금 도와주는 러버덕에 지나지 않았습니다.
Recap
돌아보면 공부는 많이 했는데 성과는 없는 그런 해였군요.
유일하게 남은 건 Theori 인턴 시절 쓴 블로그였습니다. 서울 리저널도 제 성과라고 보기엔 부족한 구석이 많은지라... 열심히 허우적거렸지만 막상 돌아보면 제자리였던 해네요.
Comments
Loading...