반응형
간단한 소스코드네요.
어떤 랜덤값이 나오는지 확인하기 위해서 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...
반응형
'[ ★ ]Study > War Game' 카테고리의 다른 글
[Toddler's Bottle] pwnable.kr leg 풀이 (0) | 2017.09.15 |
---|---|
[Toddler's Bottle] pwnable.kr input 풀이 (0) | 2017.09.13 |
[Toddler's Bottle] pwnable.kr passcode 풀이 (2) | 2017.08.17 |
[Toddler's Bottle] pwnable.kr flag (0) | 2017.08.17 |
[Toddler's Bottle] pwnable.kr bof (0) | 2017.08.16 |
댓글