728x90
#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;
}
c언어를 배울때 rand함수는 srand를 해주기 전엔 random값이 아니라고 배웠다.
gdb로 rand의 첫번째 값을 확인해서 deadbeef랑 xor연산을 해준 값을 넣어주면 끝난다.
18에 bp를 걸어주고
0x6b8b4567 xor 0xdeadbeef = B526 FB88 >> 3039230856 (10진수)
Mommy, I thought libc random is unpredictable...
728x90
'pwnable > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] blukat (0) | 2020.10.12 |
---|---|
[pwnable.kr] cmd1 (0) | 2020.10.10 |
[pwnable.kr] passcode (0) | 2020.10.08 |
[pwnable.kr] mistake (0) | 2020.10.03 |
[pwnable.kr] lotto (0) | 2020.09.23 |