2018. 1. 15. 10:12, 워게임/Pwnable.kr
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