Back to all posts
qwerty

In Univ. (2020-2)

5 min read

※ 과거 일을 회상하는 글이라 일부 과장, 왜곡, 축소가 있을 수 있습니다.

1. Summer Vacation

Summer Camp?

다들 대학교 오면 논다고 하는데 거짓말이었어요. 처음 맞이한 3달 간의 여름방학은 생각보다 바빴습니다.

PLUS의 정회원이 되기 위해선 여름 합숙을 잘 받은 후 Qualification Exam (QE)을 통과해야 했습니다. 아는 게 거의 없던 저는 합숙이라도 열심히 들어야 따라갈 수 있어서 일단 시간 박치기를 했습니다. 수업 시작이 아마 오후 3시쯤인가? 였는데 마침 제 기상시간이랑 겹치더라고요. 역시 컴퓨터 하는 사람들은 다 똑같은가 봅니다.

심지어 저는 당당하게 'Web으로 들어간 다음 Pwn을 공부할 것이다.'라고 면접 때 주장했는데, 이걸 증명하기 위해서라도 Pwn을 열심히 공부할 필요를 느꼈습니다. 들어갈 당시에도 Pwn을 주력으로 하고 싶었으나 현재 문제와 가장 비슷한 블로그 글을 하나 들고 온 뒤 그대로 따라하는 방식으로 모든 문제를 해결했던지라... ida는 커녕 gdb를 사용하는 방법조차 모르고, 어셈블리도 제대로 읽을 줄 모르는 사람이 이걸 면접으로 보는 게 가당키나 할까요. 별 수 없었습니다.

해킹 공부에 꽤 많은 시간을 투자했습니다. 마침 Dreamhack이라는 플랫폼이 베타가 끝나고 나온 뒤라 저에겐 좋은 교재가 하나 더 있었죠. 일단 15:00 ~ 00:00 동안 수업 듣고 문제 풀기를 반복했습니다. 들어도 잘 이해가 안 되는 개념은 Discord로 물어보거나 Dreamhack 강의를 한 번 더 보는 방식으로 공부했던 것 같네요.

과제도 생각보다 엄청 많이 나와서 후반부에는 절반도 못 쳐냈지만 그래도 당시에는 새로운 지식을 배운다는 것 자체가 즐거웠습니다. 제 기억으로 기본적인 Pwn (Fake EBP, Shellcode, RTL, GOT, ROP, Heap 구조), Rev (Assembly), Web (SQL Injection, SSTI, SSRF 등), Crypto (고전 암호, RSA, 디피-헬만)등 해킹을 위한 넓고 얕은 지식을 배웠습니다. Pwn 빼곤 이 때 배운 지식이 전부인 것 같네요.

그 때 조금 더 열심히 다른 분야를 공부해 볼 껄 하는 생각이 종종 들기도 합니다.

QE

Qualification Exam (QE)는 여름 합숙을 잘 따라왔는지, 그리고 실제로 동아리에 들어올 만한 사람 인지를 평가하는 시험입니다만 당시에는 왜 이런 시험이 있어야 하는지 이해할 수 없었습니다. 엄밀히 말하자면, 이해할 수 없었다기보단 떨어질 것 같아서 그랬습니다 ㅋㅋㅋ 이렇게 방학동안 생고생했는데 떨어지면 그것대로 억울할 것 같아서 말입니다.

그리고 예상한 대로 QE는 꽤 어려웠습니다. 분명 열심히 따라왔는데 막상 문제는 굉장히 어렵더라고요. 교수님이 '이번 시험은 오픈북이에요' 하고 중간고사 문제를 준다면 딱 이런 느낌이었을 겁니다.

실제로 당시에는 '이거 통과 못하겠는데?' 라는 생각을 했습니다. 심지어 Pwn을 하겠다고 주장해 놓고 Pwn은 제대로 못 풀었습니다.

  • 그냥 Pwn을 못하는 사람

아무튼 통과했으니 여러모로 잘 되었다고 치도록 하죠.

2. In Univ. (2020-2)

2020-2

새 학기가 되었습니다. 해킹하는 사람이지만 집에서는 공부를 못하는 사람이라 항상 카페에 가서 공부했는데, 이놈의 코로나는 끝날 기미가 안 보이는군요. 그냥 카페에서 공부하는 청년 1로 살았습니다.

물론? 학교 공부는 뒷전으로 미뤄두고 대부분의 시간을 워게임 푸는 데 사용했죠. 워게임 풀이 현황을 보면 2020.09. 부터 한참 많이 풀려있는 걸 볼 수 있습니다. 역시 수업시간에 하는 딴 짓이 제일 즐거운 걸까요?

중간에 간헐적으로 2주씩 비어 있는 건 시험공부 때문입니다. 아무래도 성적을 완전 놓아 버리긴 무서워서... 여러분들이 저였어도 시험 공부 하러 갔을 꺼니 그러려니 해 주십쇼.

이 당시엔 쉬운 문제들이나 Pwn 분야의 실-골 문제를 풀었습니다. 아주 간단한 Heap 문제들이 제가 풀었던 가장 어려운 문제들이었던 것 같네요. 20-21년도 문제 트렌드가 힙 트릭 익스플로잇이었어서 더 많이 공부했던 것 같습니다.

꼭 힙 트릭이 아니더라도 당시 저에게 굉장히 어려운 문제들이 많았습니다. pwnable.tw는 말할 것도 없고, pwnable.kr, 심지어 Dreamhack 내에도 충분히 어려운 문제가 즐비했기에 어떻게 풀 지 고민하며 하루를 보내곤 했습니다.

제가 당시 가장 오래 고민했던 건 Validator Revenge 라는 문제였습니다. 1주일 고민하다 모르겠어서 접고 다시 고민하다 접고를 한 몇 달 반복했던 것 같은데, 갑자기 어느 날 임의 주소에 임의 값을 더할 수 있는 ROP 가젯을 이용해 GOT 영역을 system()으로 바꾼 뒤 호출하면 된다는 멋진 아이디어가 떠올랐고 그대로 ROP를 짜니 진짜로 flag가 나왔습니다. 이 때의 쾌감은 정말로 이루말할 수 없네요. 아직도 이런 순간을 잊지 못해서 해킹을 놓지 않고 있는 듯 합니다.

이렇게 보니 그냥 도파민 중독자와 하등 다를게 없군요.

그래도 꾸준히 수업은 잘 참여하고 있었습니다. 어디까지나 참여지만 말입니다. (방금 성적표를 보고 왔는데 1학년 때 공부 좀 더 열심히 할 껄 싶긴 하네요) 글쓰기랑 수학 성적이 제일 낮은데 아이러니하게도 저 둘을 좋아한다니... 역시 잘하는 것과 좋아하는 건 조금 다른가 봅니다. 그래도 하다 보면 어느정도 잘해지지 않을까... 그렇게 희망하고 있습니다.

3. Winter Vacation

포항공대의 겨울방학은 짧은 편입니다.

여름 방학은 거의 3달에 달하는 반면 겨울 방학은 채 2달이 안됩니다. 포스택의 학기는 2월 중순에 시작하고 방학은 다른 학교와 비슷하게 시작하니 체감상 그런 게 아니라 실제로 정말 짧은게 맞습니다. 여름방학이 너무 길다는 것도 한 몫 하지만 이건 체감상 이슈죠.

그래서 PLUS에서도 겨울합숙을 진행하기는 하나 여름만큼 많은 내용을 배우진 않습니다. 조금은 자율 학습에 가까운 형태로 운영되죠. 다만 학기중이 아니다보니 CTF를 많이 참여합니다. 이때부터 뉴비들도 어느정도 사람 구실을 할 수 있기 때문에 그래도 마이너 CTF에서 한 두 문제는 풀 수 있습니다. 흔히 K-CTF라고 불리는 마이너 대회에서는 솔찬히 풀었던 것 같네요.

아래 사진은 겨울 방학은 아니지만, 제가 Pwn을 놓지 않게 만들어 준 아주 중요한 CTF입니다. 이제는 역사속으로 사라진 대회같긴 하지만... 제가 대회를 뛰던 당시만 해도 어느정도 메이저에 속하는 대회였습니다.

아마 예전에 CTF를 했던 분들이라면 많이 느껴보셨겠지만 CTF는 1인분 하기 상당히 어려운 구조입니다. 잘하는 1명이 푸는 게 보통인 n명이 푸는 것 보다 빠르기 때문이죠. 많이 공부했다 싶어도 막상 CTF에선 한 문제도 못 푸는 나날이 지속되다보니 그런 생각이 드는 것도 이상한 일은 아닐껍니다. 이 때 접었으면 (제가) 후회를 좀 했겠군요.

그럴 때마다 한 번 씩 저런 에피소드들이 나와주는거 보면 참 운이 좋았다고 생각합니다.

저 당시엔 각종 Heap trick과 Libc trick(FSOP, rtld 등) 그리고 최대한 많은 CTF에 참여하기를 했습니다. 지금 돌아간다면 trick을 외우기보단 그냥 glibc 코드를 많이 읽어 이해하려고 할 것 같은데, 당시에는 뭐가 더 나은 방법인지 모르니까 그저 암기 위주로 공부했습니다. 역시 사람은 머리를 스스로 박아봐야 뭐가 나은 선택인지 깨닫는 것 같네요. 적어도 전 그런 사람인가봅니다.

커널 문제나 V8 문제도 간헐적으로 나왔습니다. 당시 Pwn 트랜드는 ELF 위주의 문제 구성에 진짜 어려운 걸로 Kernel이나 V8 1~2개씩 나오는 형태였는데 다른 문제는 저보다 잘하는 선배들께 던져놓고 저는 그냥 ELF 문제만 줄창 풀었습니다. 당시엔 'ELF 문제도 못 푸는데 저런걸 어떻게 해' 라는 마음가짐이라고 생각했지만, 지금 돌아보면 1인분을 해야 한다는 강박이었을지도 모르겠습니다. 어찌되었든 회피하는게 좋은 자세는 아니었던 것 같네요.

그렇게 짧은 겨울 방학은 정말 빠르게 지나갔습니다. 학교도 제대로 가본 적이 없는데 벌써 2학년이 되어있더라고요. 그리고, 2학년이라고 학교를 갈 수 있는것도 아니었습니다(feat. COVID-19).

대학교를 다니고 있는게 맞나 싶기도 했지만, 아무튼 편한 생활이었으니 만족해야겠죠?

Comments

Loading...