본문 바로가기
시스템 해킹/pwnable.kr

[Pwnable.kr] random

by L3m0n S0ju 2021. 7. 27.


#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 함수에 시드 값이 없으므로 random 함수의 결과값이 랜덤이 아닐 것임을 추측할 수 있다. random 함수의 결과값은 gdb로 확인하면 0x6b8b4567이다. 따라서 양쪽에 random 값을 xor을 해주면 아래와 같은 식이 성립한다.

 

(key ^ 0x6b8b4567) = 0xdeadbeef       =>     key = 0xdeadbeef ^ 0x6b8b4567 = B526FB88 = 3039230856

 


 

'시스템 해킹 > pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] shellshock  (0) 2021.07.27
[Pwnable.kr] input  (0) 2021.07.27
[Pwnable.kr] passcode  (0) 2021.07.27
[Pwnable.kr] cmd1  (0) 2021.04.21
[Pwnable.kr] mistake  (0) 2021.04.21

댓글