학회_공부해요/워게임

[Dreamhack] Write up - whatsdifferent

yenas0 2024. 2. 26. 23:51
반응형

https://dreamhack.io/wargame/challenges/900

 

whatsdifferent

Description 드림이는 ff 파일의 내용을 약간 수정해서 fs 파일로 저장했습니다. 드림이가 수정한 부분은 어디였을까요? 수정한 부분이 포함된 라인의 전체 문자열을 획득하고 DH{ } 중괄호 안에 넣어

dreamhack.io


문제 파일 열어봤는데 c언어파일이랑 리눅스에서 열리는거 파일 두개길래 리눅스 켜봤다.

리눅스에서 접속하니까 위에처럼 파일들이 뜬다

문제에서 말한 ff랑 fs도 보임.

실행 가능한거는 chall이 있다.

 

int main(int argc, char *argv[]) {
    char cmd[50];
    char input[21];
    char filter[] = {'&', ';', '|', '$', '`', '*','[', ']', '{', '}', '\\', '^', '~', '?', '#', '!'};

    initialize();
    system("ls -al");
    printf("Input Command: \n");
    scanf("%20[^\n]", input);

    // filtering
    for (int i = 0; i < strlen(input); i++){
        for (int j = 0; j < sizeof(filter); j++){
            if(input[i] == filter[j]){
                printf("filtered.\n");
                exit(0);
            }
        }
    }

    snprintf(cmd, 49, "(%s) > /dev/null", input);

    system(cmd);
    system("cat ./out");
    printf("Terminated\n");

    return 0;
}

메인함수는 위에 내용이다

char filter에 있는거.. 특수문자가 입력되면 필터링이 되나보다.

 

시험삼아 특수문자랑 특수문자 아닌거랑 두개를 넣어보았다.

특수문자를 입력한거는 예상한거랑 똑같이 filtered가 출력되었다.

 

그냥 문자열을 넣은거는 뭔.. 뭐가 다르냐며.. 물어보네 아마 ./out 에 저장되어 있는 말인거같다.

 

파일이 뭐가 다른지 확인하는 명령어를 사용해봤는데

마찬가지로 명령어에 상관없이 다 그냥 똑같은 문자열만 출력된다.

 

 

저 what's diffferent가 출력되기 전에 

 

snprintf를 하는데 뭔지 몰라서 찾아보니 버퍼에 입력하는거라고 한다.

그래서 안나오는 듯??

 

어떡해야되지 모르겠는..

그래서 계속 찾아보다가 ./out파일은 출력되니까 그냥 이쪽으로 리다이렉션 시키면 될까 싶어서 명령어 쳤는데

 

오 된다

반응형

'학회_공부해요 > 워게임' 카테고리의 다른 글

[H4CGM] Write up - Hello, Postman  (1) 2024.03.19
[Dreamhack] Write up - likeb64  (1) 2024.02.27
[Dreamhack] Write up - Type c-j  (0) 2024.02.06
[Dreamhack] Write up - simple-operation  (0) 2024.02.06
[Dreamhack] Write up - set-int  (0) 2024.01.23