본문 바로가기

Wargame/Reversing-W

[RingZer0 CTF] Kernel Introduction

Kernel Introduction 문제입니다.

문제에 접속하면 바이너리 파일을 다운로드 받을 수 있습니다.

바이너리 파일을 다운로드 받아보면 실행파일도 뭐도 아닌걸 알 수 있는데..

사실 실행하면 풀리는 문제인거 같습니다..(필자는 그렇게 풀지 않았습니다..)


어쨌든 필자는 아이다로 열어서 살펴봤습니다. 문자열이 박혀있고, 어떤 루틴을 통과합니다.

그리고 그 루틴을 모두 통과한 뒤에 연산 결과를 출력해주는 식의 프로그램이더군요.


보기 쉽게 헥스레이로 보면 이런식으로 코드가 표시됩니다.

그럼 이 코드를 비슷하게 코딩해서 출력해주면 플래그가 뜨겠군! 이라고 생각할 수 있습니다.

문제는 qmemcpy(buffer, &unk_236, sizeof(buffer)); 이 부분이겠네요.

버퍼에 무언가 메모리를 복사해 오는데 저 &unk_236 의 값을 알지 못하면 연산하는 값을 설정해 줄 수 없어서

이상한 값이 출력되니까요.


그래서 &unk_236 부분을 찾아가줍니다.

정확히 buffer의 크기만큼 헥스값 34개가 박혀있습니다. 이걸 그대로 갖다쓰면 되겠네요.




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
#include <stdio.h>
#include <string.h>
 
int main(void){
        char key[1024= "28714143kkl23jlsdkj34hji53jhk345khj543jhk354h354jh354jhkl354jhkl354hjk345hjk3h4i5h3l4h5iul34u6h4e5uh7ui5h7uilyhhiuyhuileyhlui6yhuilyuhil55hhuilhiw543uhiw34uhihuiuh6iwl354h";
 
        char buffer[34= {0x760x34,0x71,0x76,0x4f,0x4c,0x7b,0x42,0x0e,0x5e,0x06,0x4e,0x02,0x72,0x50,0x01,0x53,0x07,0x0c,0x34,0x06,0x4b,0x07,0x04,0x2a,0x61,0x0a,0x66,0x73,0x53,0x03,0x4e,0x04,0x00};
 
        int v5 = atoi(key);
        int v0 = 0, v6 = 0, v1 = 0, v3 = 0,i,j;
        char v7;
        char output[1024];
 
        v1 = key;
 
        for(i =256; i; --i){
        v1 = 0;
        v1 += 4;}
 
        v3 = output;
 
        for(j = 256; j; --j){
        v3 = 0;
        v3 += 4;
        }
 
        sprintf(key, "0x%08x", v5);
 
        while(v0 < strlen(buffer)){
        v7 = key[v6++];
        sprintf(output,"%s%c",output, v7^buffer[v0]);
        if(v6 == strlen(key)){v6 = 0;}
        ++v0;
    }
        printf("<1>%s\n",output);
        return 0;
}
cs

그래서 위에서 알아낸 정보들을 가지고 간단히 코딩을 수행했습니다.

이 코드를 실행해주게 되면


이렇게 플래그가 나오게됩니다.

커널 단에서 실행하는 것을 목표로하는 문제같은데

얼떨결에 코드 복사,해석으로 풀어버렸네요.. 나중에 시간날 때

커널 단에서 실행하는 식으로 다시 풀어봐야겠습니다..




반응형

'Wargame > Reversing-W' 카테고리의 다른 글

xcz.kr PROB9  (0) 2017.08.07
wargame.kr DLL_with_notepad  (0) 2017.08.04
xcz.kr PROB30  (0) 2017.08.04
wargame.kr keypad_crackme  (0) 2017.08.02
wargame.kr easy_crackme  (0) 2017.08.01