gunnew의 잡설

pwnable.kr 6. random 본문

System Security

pwnable.kr 6. random

higunnew 2020. 2. 5. 16:17
반응형

 이번 챕터는 너무 쉽다. library에 있는 rand 함수의 취약점을 이용하는 건데, rand()는 진짜 random이 아니라 pseudo-random number이다. 그러니까 seed가 동일하다면, 동일한 random sequence를 내놓는다. 코드부터 보자.

 

그림 1 : random.c

 

random에 rand()를 호출하는데 seed는 0으로 언제나 똑같다. 그러면 seed가 0일 때 어떤 rand값을 산출하는지 확인해보면 1804289383으로 항상 같은 값을 산출하는 것을 볼 수 있다.

 

그림 2 : random number 테스트

 

 다시 코드로 돌아가서 random (XOR) key 가 0xdeadbeef가 되어야 한다. random은 1804289383으로 binary로 

110 1011 1000 1011 0100 0101 0110 0111

이다.

 

그리고 0xdeadbeef는 binary로

101 1110 1010 1101 1011 1110 1110 1111

이다.

 

두 값을 XOR하면 다음 값이 나온다.

 

이제 입력으로 3039230856을 대입하면 끝!

반응형
Comments