[Pwnable.kr] random 풀이 (1pt)
Wargame/pwnable.kr

[Pwnable.kr] random 풀이 (1pt)

풀이

다음은 random.c의 코드이다.

#include <stdio.h>

int main(){
        unsigned int random;
        random = rand();        // random value!

        unsigned int key=0;
        scanf("%d", &key);

        if( (key ^ random) == 0xdeadbeef ){
                printf("Good!\n");
                system("/bin/cat flag");
                return 0;
        }

        printf("Wrong, maybe you should try 2^32 cases.\n");
        return 0;
}

언뜻 보면, random 값은 맨날 바뀌어 정말로 $2^{32}$번의 연산을 해야 하는 듯 보이지만, 과연 그럴까?

결론부터 말하자면, random 값은 바뀌지 않는다.

random 값에 뭐가 들어가나 확인해보고 XOR 연산을 수행하면 간단하게 key 값을 맞출 수 있을 것이다.

'Wargame > pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] leg 풀이 (2pt)  (0) 2020.07.20
[Pwnable.kr] input2 풀이 (4pt)  (0) 2020.07.20
[Pwnable.kr] passcode 풀이 (10pt)  (0) 2020.07.19
[Pwnable.kr] flag 풀이 (7pt)  (0) 2020.07.19
[Pwnable.kr] bof 풀이 (5pt)  (0) 2020.07.19