본문 바로가기
[ ★ ]Study/War Game

[Toddler's Bottle] pwnable.kr random 풀이

by nroses-taek 2017. 8. 17.

 


간단한 소스코드네요.

어떤 랜덤값이 나오는지 확인하기 위해서 main+18부분에 break를 걸었습니다.
+18부분에서 eax를 rbp-0x4에 값을 넣습니다. 
즉, 브레이크를 걸고 레지스터를 확인하면
빠르겠죠 ? 아래 그림있습니다.

 
0x6b8b4567이라는 값이네요.
몇번을 확인해도 똑같은 값입니다.
rand() 함수는 범위를 지정해주지 않으면 같은 값을 뽑아내기 때문이죠.
때문에 정말 랜덤값을 뽑고싶다면 srand를 사용하도록 합시다.

 xor의 원리에 따라서
key ^ random = 0xdeadbeef
a        b        c
 
a ^ b = c
 
b ^ c = a
 
rand ^ deadbeef = key
 
 
rand = 0x6b8b4567 = 1804289383
c = 0xdeadbeef = 3735928559
 
3039230856


random@ubuntu:~$ ./random 
3039230856
Good!
Mommy, I thought libc random is unpredictable...


댓글