본문 바로가기

CTF

제 12회 정보보호올림피아드 예선풀이

제 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