-
ANUSEC 2021 후기
2021년 8월 21일 진행된 전국 고등학생 사이버 보안 경진대회(ANUSEC 2021)에 Hyp3rFlow 팀으로 참가했습니다. 고등학생 3인 대회이므로, Hyp3rFlow에 마침 있던 고등학생 팀원 두 명(cgiosy, junseo)과 함께 참가하게 되었습니다. 실력이 많이 미약한 편이지만, Crypto 파트를 담당하여 풀기로 계획했습니다. cgiosy는 Web, junseo는 reversing이 없는 관계로 pwn을 보고 있었습니다. 대회 결과 총 37팀 중 7등을 하여 아쉽게 수상권에 들지 못했습니다. 아무래도 Crypto 파트에서의 시간 낭비와 알파벳을 의도한대로 읽지 못한 불운이 겹쳤고, pwn 파트에 익숙한 팀원이 없어 점수를 따지 못한...
-
20210502~20210508 BOJ 연습
1. BOJ4641 Doubles 리스트에서 각 숫자의 순서가 아닌 개수만이 중요하므로, 리스트를 순회하여 개수를 기록하고, 모든 숫자를 set에 삽입한다. set을 순회하면서 $cnt[x]\times !!cnt[2\times x]$를 모두 합하면 끝. 2. BOJ18004 From A to B 얼핏 우박수와도 비슷해보이지만, 결정적인 차이점은 숫자가 줄어들거나 늘어나려면 한 가지 선택지밖에 없다는 것이다. A>B라면 A가 짝수인지를 고려해서 A:=A/2를 가능한 한 시행하고, A<=B라면 A+=1을 B-A번 시행하여 두 수를 같게 만들 수 있다. 3. BOJ20500 Ezreal 여눈부터 가네 ㅈㅈ 상당히 당황스러운 디스크립션의 문제지만(…), 아무튼 어렵지...
-
[BOJ1987] 알파벳
BOJ1987 방문했던 알파벳을 다시 방문하면 안 되므로 backtracking을 하면서 이를 저장해줘야 하는데, 비트마스킹을 사용하면 깔끔하게 처리할 수 있다. 굳이 사용하지는 않아도 되나, 비트마스킹 기초 연습으로 풀기에 좋은 문제인 듯 하다. #include<bits/stdc++.h> using namespace std; #define ORD(x) (x-'A') const int dx[] = { 0, 0,-1, 1}; const int dy[] = {-1, 1, 0, 0}; int R,C; string arr[20]; int vpos(int x,int y){ return x>=0&&x<R&&y>=0&&y<C; } int mx=0; void f(int x,int y,int vis){ mx = max(mx,__builtin_popcount(vis)); for(int...
-
RSA Puzzles (1)
이전 글 - RSA 원리와 구현 이전 글에서는 RSA의 원리와 그 구현에 대해 간단히 소개하였으며, 이번 글에서는 ctf의 RSA Puzzle들에 적용할 수 있는 방법들을 몇가지 소개할 예정이다. (RSA Puzzle이라는 용어를 사용하는 이유에 관해서는 secmem - RSA Puzzles를 참고) Weak N RSA의 여러 인자 중 N은 RSA의 원리와 안전성 보장에 직결되어있는 요소이다. 이러한 N이 특정한 취약점을 지녀 쉽게 인수분해되거나 phi(N)이 쉽게 계산되어, RSA 암호화 전체를 파훼할 수 있게 되어버린다. 다음은 N에 발생할 수 있는 취약점 중...
-
POSTECH 온라인 해킹캠프 후기
지난 1월 18일부터 22일까지 5일에 걸쳐 POSTECH 해킹동아리 PLUS에서 주최한 온라인 해킹 캠프에 참여하게 되었다. 과학고 및 영재고에 재학 중인 학생을 대상으로 해킹 전반에 관한 기초를 다지는 캠프였다. 그 이전에 팀 단위 ctf에서 아무것도 못하는게 비참해서 이것저것 배운 후 뭐라도 할 수 있는 사람이 되자는 생각에 지원하였고, 6개 조 중 F팀으로 참가하게 되었다. 개인적인 소감을 말하자면, 기초를 다지기에는 정말 좋은 기회였다. 실습용 리눅스 서버를 개인마다 계정 하나씩 제공해주고, 디스코드로 수업 중에 질문 등에 대한 피드백과...