picoCTF 2026이 나의 첫 CTF 대회였다. 솔직히 CTF라는 걸 제대로 해본 적이 없어서 어디까지 풀 수 있을지 감도 안 잡혔다. 그냥 평소에 공부했던 거 써먹어보자는 마음으로 참가했는데, 결과가 예상보다 훨씬 좋게 나왔다. 운이 좋았다고 생각한다.
팀명은 ANH_1, 닉네임은 nyoHk로 참가했다.

47등, 14,500점. 초록색으로 하이라이트된 게 우리 팀이다.

개인 점수 10,800/14,500. 4개 카테고리 올클이 눈에 보인다.
대회 기간은 약 일주일이었고, 실질적으로 집중한 건 4일 정도다.
| 날짜 | 한 일 | 비고 |
|---|---|---|
| 3/10 (1일차) | Pwn 8문제 올클 + Rev 고배점 문제 착수 | Pwn을 약 2시간 만에 밀어버렸다 |
| 3/10~11 (1~2일차 새벽) | Rev, Blockchain 올클 + Forensics 고배점 + Web/General 일부 | 새벽까지 달렸다 |
| 3/13 (3일차) | 남은 쉬운 문제들 스피드런 | General Skills, Forensics, Rev 100pt대 정리 |
| 3/14~16 | paper-2에 매달림 | 이거 하나에 며칠을 쏟았다 |
1일차에 Pwn을 빠르게 정리한 게 컸다. 덕분에 나머지 시간을 Web 고배점 문제에 투자할 수 있었다.

Pwn 문제 목록. 3월 10일 오후에 전부 풀었다.
솔직히 Pwn이 제일 걱정이었는데, 예상보다 쉬웠다. 오후 3시 51분에 Quizploit(50pt)을 시작해서 5시 48분에 Pizza Router(400pt)까지, 약 2시간 만에 8문제 전부 풀었다.
Echo Escape 1, 2는 기본적인 Buffer Overflow/Format String 문제였고, Heap Havoc은 힙 오버플로우로 함수 포인터를 덮는 전형적인 패턴이었다. tea-cash는 tcache free list 구조를 이해하고 있으면 풀 수 있었고, offset-cycle 시리즈도 오프셋 계산만 정확하면 됐다. Pizza Router가 그나마 좀 복잡했는데, 힙 주소 leak 후 함수 포인터를 조작하는 방식이라 접근법 자체는 익숙했다.
평소에 pwntools 가지고 이것저것 해본 게 도움이 많이 된 것 같다. 다만 picoCTF 특성상 교육 목적의 대회라 난이도가 실전 워게임보다는 낮았을 수 있다. 그래도 첫 CTF에서 Pwn 올클은 기분이 좋았다.
| 문제 | 배점 | 기법 | 체감 난이도 |
|---|---|---|---|
| Quizploit | 50 | 기초 | 하 |
| Echo Escape 1 | 100 | Stack BOF, ROP | 하 |
| Echo Escape 2 | 100 | Stack BOF (32bit) | 하 |
| tea-cash | 100 | Tcache 구조 이해 | 중하 |
| Heap Havoc | 200 | Heap Overflow, 함수 포인터 덮기 | 중 |
| offset-cycle | 300 | 오프셋 계산 | 중 |
| offset-cycleV2 | 400 | offset-cycle 심화 | 중 |
| Pizza Router | 400 | Heap Leak + 함수 포인터 조작 | 중상 |

Rev 문제 목록. JITFP(500pt)를 제일 먼저 풀었다.
Rev는 재밌었다. 특이하게 가장 높은 배점인 JITFP(500pt)를 제일 먼저 풀었다(3/10 오후 6:18). 그 다음 날 새벽에 Binary Instrumentation 시리즈(300, 400pt)를 정리하고, 3일차에 나머지 100~200pt대 문제들을 스피드런으로 밀었다.
Binary Instrumentation 3, 4가 인상 깊었다. 바이너리 계측(instrumentation) 도구를 활용해서 동적 분석하는 문제였는데, 정적 분석만으로는 풀기 어려운 구조였다. Hidden Cipher 시리즈는 암호화 로직을 역추적하는 전형적인 Rev 문제였고, Gatekeeper나 Bypass Me는 조건 분기를 우회하는 기본기 문제였다.
Blockchain 카테고리는 4문제 전부 Solidity 스마트 컨트랙트 취약점 문제였다. 3월 11일 새벽에 약 30분 만에 전부 정리했다.
| 문제 | 배점 | 취약점 |
|---|---|---|
| Access_Control | 200 | 접근 제어 미흡 |
| Front_Running | 300 | 트랜잭션 선행 실행 |
| Smart_Overflow | 300 | 정수 오버플로우 |
| Reentrance | 400 | 재진입 공격 |
Reentrance(재진입 공격)가 제일 배점이 높았는데, 유명한 DAO 해킹 사건에서 쓰인 기법이라 공부해둔 게 그대로 나왔다. 운이 좋았다.

Forensics Git 시리즈(0, 1, 2)가 기억에 남는다. Git 히스토리를 뒤져서 숨겨진 정보를 찾는 문제인데, git log, git diff, git show 같은 명령어를 얼마나 잘 쓰느냐가 관건이었다. Forensics Git 2(400pt)가 시리즈 중에서 가장 까다로웠다.
Rogue Tower(300pt)와 Timeline 시리즈도 나름 재밌었다. DISKO 4는 디스크 이미지 분석 문제였는데 도구만 잘 쓰면 금방 풀렸다.

General Skills 문제 목록.
Printer Shares 시리즈(1, 2, 3)가 이 카테고리에서 가장 기억에 남는다. SMB 프로토콜을 이용한 문제인데, Printer Shares 2에서 SAMR 프로토콜로 비밀번호를 크래킹하는 과정이 실전적이었다. bytemancy 시리즈(0~3)도 바이트 조작을 단계별로 심화해가는 구조라 학습용으로 괜찮았다.

Web 문제 목록. 6문제 풀었다.
Web은 6문제를 풀었고 이 카테고리에서 가장 어려웠던 문제이자 이번 대회 전체에서 가장 고생한 문제가 paper-2다.
ORDER ORDER(300pt) 는 Second-Order SQL Injection 문제였다. 회원가입 시에는 prepared statement로 안전하게 저장되지만, 리포트 생성 시 username이 쿼리에 직접 결합되는 구조였다. 문제 설명에 "I've prepared my queries everywhere! I think!" 라고 적혀있었는데, 이게 힌트였다. 모든 쿼리를 prepared 했다고 생각하지만 사실 빠뜨린 곳이 있다는 뜻이었다.
paper-2(500pt) 는 진짜 어려웠다. Redis의 LRU(Least Recently Used) Eviction 정책을 이용한 부채널(Side-channel) 공격인데, CSS 셀렉터로 봇이 특정 캐시 엔트리를 "터치"하게 유도한 다음, 더미 데이터를 밀어넣어서 터치되지 않은 엔트리만 삭제시키는 방식이다. 개념 자체도 생소했고, 타이밍 조절이 핵심이었다. 약 84번의 시도 끝에 풀었고, 3일 정도를 이 문제 하나에 쏟았다. 이건 별도 writeup으로 상세하게 정리할 예정이다.
솔직히 paper-2가 아니었으면 대회가 훨씬 편했을 거다. Redis 캐시 용량이 5,000 slots인 걸 알아내는 것부터, Pre-fill 양(430MB)과 Eviction 양(230MB)의 정밀한 조절, 봇이 CSS를 파싱하는 동안의 15초 딜레이 계산까지... 단순히 코드를 짜는 게 아니라 인프라 레벨의 이해가 필요했다.
처음에는 노이즈 캔슬링이라는 그럴듯한 방법을 썼는데, 오히려 Redis 상태를 계속 변화시켜서 신호가 0개로 나왔다. 결국 단순하게 플러딩 마진을 넉넉히 주는 게 답이었다. 스마트한 방법이 항상 좋은 건 아니라는 걸 체감했다.
| 카테고리 | 풀이 | 올클 여부 | 개인 점수 |
|---|---|---|---|
| Binary Exploitation | 8/8 | 올클 | 1,650 |
| Blockchain | 4/4 | 올클 | 1,200 |
| Cryptography | 0/12 | - | 0 |
| Forensics | 8/8 | 올클 | 1,900 |
| General Skills | 15/17 | - | 2,150 |
| Reverse Engineering | 11/11 | 올클 | 2,400 |
| Web Exploitation | 6/10 | - | 1,500 |
| 합계 | 52/70 | 10,800 |
첫 CTF치고는 운이 좋았다고 생각한다. 47등이라는 숫자도 좋지만, 그보다 평소에 공부했던 것들이 실제 문제에서 통한다는 걸 확인한 게 더 값졌다. Pwn이나 Rev 같은 바이너리 계열은 자신감이 붙었고, Blockchain 쪽도 기본적인 스마트 컨트랙트 취약점은 커버할 수 있다는 걸 알게 됐다.
paper-2를 비롯한 주요 문제들의 상세 writeup은 별도 글로 올릴 예정이다.
출처: picoCTF 2026 (Carnegie Mellon University)