6. random


1

random value 문제인가보다

들어가보자


2

같은 형식이다.

random.c를 읽어보자


3

난수를 발생시키고 난수와 key를 xor한 결과가 0xdeadbeef와 일치하면 플래그를 읽을 수 있다.

근데 난수 발생에 그냥 rand 함수를 사용한다.

실제 예측이 불가능한 난수를 발생시키기 위해선 seed 값을 줘야 하고

seed 값 또한 같으면 같은 난수를 발생시키기 때문에

현재 시간을 이용하여 seed를 주고 난수를 발생시키는 방법을 사용한다.

아무튼 정리하면.. 같은 난수가 나오기 때문에 rand 반환 값을 추적하면 답이 나온다..


4

rand를 호출한 직후(+18) bp를 걸고 함수 반환 값을 저장하는 eax 레지스터를 조사한다.


5

답이다.

0x6b8b4567

이 값0x6b8b45670xdeadbeefxor 연산을 하면 key가 나온다.


6

3,039,230,856




© 2020.02. by blupine