0. 문제를 풀 때는 다른 문제로 바꿔서 푸는 경우가 많이 있습니다. 미로 최단거리를 그래프로 바꿔서 bfs로 푸는 것이 그 예시입니다. 하지만 문제를 바꿔서 풀 때는 조심해야 합니다. 문제를 바꾸는 과정에서 정보 손실이 일어날 수 있고, 일부 만족해야 하는 성질이 사라져 못푸는 문제가 되어버릴 수 있습니다. UCPC F 문제로 나온 parentheses recover의 풀이를 설명하면서, N^3 풀이와 N^2 풀이의 모델링에 나타나는 차이를 설명해 볼 것입니다. (스포 방지선) 1. 가능-불가능 여부 확인 문제를 풀기 위해서는 먼저 괄호 문자열 S, T가 주어졌을 때 조건을 만족하는지 알 수 있어야 합니다. (그리고 일반적으로 풀이를 이런 단순한 문제에서 시작하는 것은 매우 좋은 습관입니다.) 이 문제..
0. 트위터에서 CTF 대회와 그 커뮤니티 규칙(?)에 대한 토론이 활발하게 일어나고 있어서 저도 이것에 대해 이야기를 해보려고 합니다. 저는 CTF와 관련된 어떠한 커뮤니티에도 속해 있지 않으며, 멘토와 같은 선생님 없이 혼자서 독학으로 공부하고 있습니다. pwnable.kr 문제만 2달 내내 팠고, 지금은 53등에 있네요. 저는 CTF 커뮤니티를 단 하나도 모르기 때문에 글에서는 주로 PS 커뮤니티의 이야기를 할 것입니다. 저는 CTF 커뮤니티가 변하는 것을 간절히 여기진 않습니다. 보안을 취미로 하고 있고, 보안 실력 뒤쳐진다고 먹고 살 걱정을 하지도 않습니다. 대회도 딱히 잘하고 싶은 마음은 없어서 커뮤니티에 속할 의무도 없습니다. (대회는 팀으로 이뤄지다보니 어떤 그룹에 소속되어있는 것이 중요한..
0. 8월 15일 정도부터 시스템 해킹 공부를 독학으로 시작했습니다. 시간으로 따지면 2개월 반 정도 됐네요. pwnable.kr에 있는 문제만 풀고있고, 지금은 9문제 (+tiny 2문제)만 남았습니다. 그래도 1년동안 팀원 코드만 봐서 그런지 어셈블리도 그냥 무난하게 잘 읽혀서 답답하지 않고, 정상적으로 돌아가고 있는 흐름을 쉘로 바꾸려고 노력하는 것도 나름 재밌습니다. 정확히는, 재밌으니까 지금까지 한 것이겠지만요. 1. 솔직히 이런 걸 혼자 공부하는 건 너무 어렵습니다. 구석에 있는 지식일수록 한국어 자료는 당연히 없고, 영어로 검색을 하면 쓸모없는 것들이 너무 많이 나옵니다. 문제를 하루 내내 생각하다 보면 온갖 방법을 다 떠올리게 되는데, 각 방법이 되는지 여부를 검색해야만 알 수 있고, 심지..
