System Security
pwnable.kr 6. random
higunnew
2020. 2. 5. 16:17
반응형
이번 챕터는 너무 쉽다. library에 있는 rand 함수의 취약점을 이용하는 건데, rand()는 진짜 random이 아니라 pseudo-random number이다. 그러니까 seed가 동일하다면, 동일한 random sequence를 내놓는다. 코드부터 보자.
random에 rand()를 호출하는데 seed는 0으로 언제나 똑같다. 그러면 seed가 0일 때 어떤 rand값을 산출하는지 확인해보면 1804289383으로 항상 같은 값을 산출하는 것을 볼 수 있다.
다시 코드로 돌아가서 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을 대입하면 끝!
반응형