제 12회 정보보호올림피아드 예선풀이 입니다.
정보보호올림피아드는 처음으로 이번년도에 참가하게 되었는데 예선 문제 중에 Q2, Q5, Q10 번 문제를 풀어서 운좋게 본선에 올라 갈 수 있었습니다.
먼저 Q2 문제는 ssh에 접속하여 elf파일을 다운받아 IDA로 보면서 똑같이 코딩해보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int i, j, ii,n; char s1[14] = "12tholympiad"; int seed = 0; for (i = 0; s1[i]; i++) seed += i * s1[i]; srand(s); for (n = 0; n != 4; n++) s1[rand() % 12] = -1; for (ii = 0; ii != 12; ++ii) { if (s1[ii] == -1) { s1[ii] = rand() % 75 + 48; if (s1[ii] <= 57 || s1[ii] > 64) { if (s1[ii] > 90 && s1[ii] <= 96) s1[ii--] = -1; } else { s1[ii--] = -1; } } } s1[12] = 0; seed = 0; for (i = 0; s1[i]; i++) seed += i * s1[i]; srand(seed); for (j = 0; j != 12; ++j) { s1[j] = rand() % 75 + 48; if (s1[j] <= 57 || s1[j] > 64) { if (s1[j] > 90 && s1[j] <= 96) s1[j--] = -1; } else { s1[j--] = -1; } } printf("%s\n", s1); return 0; } | cs |
프로그램은 이런식으로 코딩되어 있는데 처음엔 "12tholympiad" 평문을 이 암호화 코드를 이용해 역연산해서 답을
구하는줄 알았지만 srand seed값 때문에 힘들거 같다고 생각했습니다.
그래서 그냥 12tholympiad 평문 대신에 Q2문제 ID "system000034" 를 넣고 돌린 문자열을 인증했더니 정답이였습니다. (해당
문제의 ID는 사람마다 달랐습니다)
그다음 Q5 번 문제 같은 경우에는 ppt파일 하나와 222.zip 파일 하나가 있는데 이 zip 파일 안에는 플래그 사진이 있었습니다.
하지만 zip파일은 비밀번호가 적혀있었고 Zip Password Recovery 를 이용해 Dictionary 어택방법으로 "sudden"이라는 비밀번
호를 구할 수 있습니다. 그 다음 압축을 풀고 사진을 보면 "NAVER" 라고 적혀있었는데 이게 Flag 였습니다.
그리고 Q10 번 문제 같은 경우는 게싱문제이기 때문에 문제 내용을 먼저 보면
"전자화폐 시스템을 P2P 네트워크에서 실현하는 경우 발생하는 문제.
비트코인보다 이전에 P2P 네트워크를 이용한 전자 화폐 시스템이 있었지만 이 문제를 해결할 현실적인 수단이 나오지 않았다.
비트코인은 블록체인, PoW, 전자서명, 해답 인센티브를 통해 이 문제를 해결했다.
누구나 참가할 수 있는 네트워크에는 악의적인 참가자가 존재할 가능성이 있다.
의도적으로 부정 거래를 만들어내거나 거래 결과를 자신에게 유리하게 변조할 가능성이 있다."
이 문제를 알아내면 되었는데 1~2시간 구글링 하다가 운좋게 정답이 있던 블로그를 찾아서 인증할 수 있었습니다.
답은 "비잔티움 장군 문제" 입니다
남은 시간은 Q3 애니팡? 문제를 계속 잡고 있었는데 못풀어서 아쉬웠습니다. (다른사람들은 잘 푸시던데..)
'CTF' 카테고리의 다른 글
화이트해커리그 예선 write up (0) | 2017.11.17 |
---|---|
제 12회 정보보호올림피아드 본선후기 (20) | 2017.10.30 |
ASIS CTF Final 2017 Write up (ABC Reversing challenge) (0) | 2017.09.19 |
YISF 2017 본선 풀이(x) (0) | 2017.09.18 |
YISF 2017 write up (0) | 2017.08.09 |