[Pwnable.kr] random
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}
 
cs

srand()가 없기 때문에 실행할 때 마다 random은 값이 일정할 것입니다. gdb로 한 번만 들여다보면 되겠네요.



*main+18에서 rand()의 return값을 $rbp-0x4에 저장하네요. break를 적당한 곳에 걸고 eax의 값을 확인하면 됩니다.

 


0xdeadbeef ^ 1804289383 = 3039230856을 넣어주면 됩니다.



'워게임 > Pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] mistake  (0) 2018.01.15
[Pwnable.kr] leg  (0) 2018.01.15
[Pwnable.kr] input  (0) 2018.01.15
[Pwnable.kr] passcode  (0) 2018.01.15
[Pwnable.kr] flag  (0) 2018.01.15
[Pwnable.kr] bof  (0) 2018.01.15
  Comments