BaaaaaaaarkingDog
코딩, 해킹
0CTF/TCTF 2019 후기

0CTF/TCTF는 중국의 텐센트가 주최하고 0ops라는 Shanghai Jiao Tong University의 해킹팀이 출제를 담당한 해킹대회입니다. 총 12팀이 본선에 참여할 수 있었고 저희는 예선을 6위로 통과했습니다. 대회는 6월 8일 오전 10시부터 6월 9일 오후 4시까지 총 30시간 동안 진행되었고, 시험기간을 보내느라 바빠서 이제야 글을 쓰네요.

 

실제 대회장의 테이블에는 4명이 앉아있게 되지만, 이 대회는 현장에 있지 않은 팀 동료도 문제를 푸는 것이 허용되는 대회였기 때문에 미리 그 부분에 대한 준비가 필요했습니다.

 

또 중국에서는 구글, 카카오톡 등이 전부 차단이 되기 때문에 이를 해결하기 위해 outline vpn을 동방에 켜놓고 vpn에 연결된 채로 대회를 진행했습니다. 그리고 외부의 팀원이 내부망에 접속할 수 있도록 뭔가 세팅을 해야했는데, 이 부분은 제가 한게 아니어서 잘 모르겠습니다.

 

저는 암호학 문제를 들여다봤습니다. 암호학은 총 3문제가 출제되었고, 독특하게도 Quantum Computing에 관한 문제가 2문제 나왔습니다. Pyquil이라는, Python에서 Quantum Computing을 할 수 있게 해주는 모듈이 사용된 코드가 제공이 되었고, 첫 번째 문제는 정해가 아닌 좀 이상한 방법으로 풀어냈습니다. 그러나 두 번째 문제는 Quantum Computing에서 Qubit의 state에 따른 확률을 정확하게 이해를 하고 있으면 풀어낼 수 있는 문제인데 완전 헤매다가 그대로 조졌습니다..ㅠㅠ

 

Misc 분야에는 ###game이라는, 틱택토와 비슷한 게임에서 AI를 이기는 것이 목표인 문제가 출제되었습니다. 저는 Minimax Tree와 같은 알고리즘을 사용하는 대신 그냥 AI 2명을 싸우게 해 그 수를 그대로 두는 방식으로 쉽게 해결했습니다.(Write-up)

 

Reversing 분야에서는 babymath라는, 바이너리 분석을 해보면 Tribonacci($F[N] = F[N-1]+F[N-2]+F[N-3] mod M$)에서 $F[k], F[k+1], F[k+2]$가 주어졌을 때 $k$를 맞추는 문제가 있었습니다. 이 때 $M$은 대략 $2^{55}$ 이고 바이너리 상에서 $k$가 $M$ 이하라는 보장이 있기 때문에 행렬의 거듭제곱으로 항을 표현하고 MITM을 하면 답을 알 수 있는데, $k$가 $M$ 이하라는 조건을 놓쳐서 행렬을 Diagonalization하려다가 실패하고, 완전 삽질을 거듭하다가 결국 풀어내지 못했습니다.

 

최종적으로 8등이라는 다소 아쉬운 성적으로 대회가 마무리되었고 대회의 상금은 1등이 0x20000위안(=대략 2200만원), 그 이후로 등수가 1등 낮아질 때 마다 절반으로 깎이는 식이라 1024위안(=17만원)을 받았습니다.. 개꿀이네여,,,

 

가서 느낀 점을 써보자면, 참가자 대우나 대회장 스케일 등에서 텐센트가 굉장히 돈을 많이 썼다는 것을 느낄 수 있었습니다. 호텔도 좋았고 대회장 시설도 훌륭했습니다. 그리고 대회가 종료된 다음날 세미나를 통해 풀이를 소개해준 것도 좋았습니다. 대회가 끝나고 11일, 12일에는 텐센트 보안 컨퍼런스가 진행되지만 시험기간이라 컨퍼런스에 참석하지 못하고 귀국했습니다.

 

개인적으로 예선때는 굉장히 문제를 잘 풀어냈는데 본선때는 그러지 못해서 많이 아쉬웠습니다. 특히 babymath을 풀어내지 못하고, 또 암호학에서 딱 1문제만 해결한 것은 좀 슬펐습니다. 이번 주에는 구글 CTF가 있는데 잘 해봐야겠습니다ㅎㅎ

 

동아리에서 좋은 기회를 얻어서 중국으로 대회를 치르러 갔다올 수 있었네요. 어떻게 보면 제가 기회를 양보받은 거여서 굉장히 감사하게 생각하고 있습니다(- -)(_ _) 참고로 7월 초에는 베이징에서 WCTF라는 대회가 있어서 또 중국에 가게 되었습니다. 긴 시간동안 같이 머리를 싸맸던 동아리원들 모두 고생많았어요. Cykor 화이팅 ~.~

 

마지막으로 대회 중에 찍었던 사진을 첨부합니다.

 

호텔 화장실이랑 자취방 크기랑 비슷한 것 같네요ㅎㅎㅎ.. 정말 좋은 호텔이었습니다.

 

그럴싸하게 생긴 뱃지입니다.

 

굉장히 그럴싸하게 생긴 대회장 입구입니다.

 

스크린이 입실렌티때 쓸법한 크기의 스크린이네요.

 

1위를 한 번 차지하긴 했읍니다,,,

 

음료가 많았습니다. 세 번째 칸에는 칭따오와 레드불이 있었는데 레드불은 탄산이 없어 맛이 이상했고 칭따오는 맛있었습니다.

 

대회 종료 8초 전

 

문제를 풀 때 마다 깃발을 하나씩 꽂아줍니다.

 

Cykor!!

 

맥주가 잔뜩 남았네요. 몇 개는 가져가서 호텔에서 마셨습니다.

 

Cykor & TokyoWesterns

 

세미나입니다. SSH의 MITM 공격이 출제되었는데 저는 손도 못댔네요.

 

주최측이 마지막 날 저녁을 현지 식당에 데려가서 사주었는데 맛이 충격적으로 없었습니다..ㅠㅠ 같은 테이블에 앉은 팀은 LeaveCat-PLUS랑 폴란드의 Dragon Sector 팀이었습니다.

 

주최측이 비행경비로 45만원을 지원해줘서 중국동방항공 비즈니스를 탔습니다. 인천공항에는 라운지에 술이 없었는데 상하이쪽에는 라운지에 술이 있어서 쓰까먹었습니다.

 

 

고생하셨습니다!!

 

최종 스코어보드

'대회 > 각종 대회 후기' 카테고리의 다른 글

DEF CON CTF 2019 후기  (2) 2019.10.14
SCPC 2019, UCPC 2019 후기  (0) 2019.08.08
WCTF 2019 후기  (2) 2019.07.12
0CTF/TCTF 2019 후기  (0) 2019.06.19
Codegate 2019 본선 후기  (0) 2019.03.30
Google Hash Code 2019 후기  (3) 2019.03.05
2018 ACM-ICPC Hanoi Regional 후기  (0) 2018.12.04
  Comments
댓글 쓰기