random.c의 소스코드를 보면 표시한 두 부분을 봐야한다. random이란 변수에 rand() 함수를 이용해 무작위 정수를 넣고
조건문에서는 사용자로부터 입력받은 key값과 XOR연산한 값이 0xdeadbeef가 되면 flag를 출력한다.
rand함수 호출 직후 EAX 레지스터 값을 보면 0x6B8B4567이다.
근데 몇번을 다시 실행해도 RAX(EAX)의 값은 그대로 변하지 않는다. 왜냐!
rand() 함수는 보통 무작위 값을 생성하기 위해 srand() 함수로 seed값을 설정해주는데.. 여기선 걍 rand()로만 받으니깐!
매번 같은 값이 튀어나온다는말이다 ㅋ 개쉽다. 익스 ㄱㄱ
고정된 랜덤값에 0xdeadbeef를 XOR연산해서 넣어주면 된다.
끝.
'Wargame > Pwnable.kr' 카테고리의 다른 글
Pwnable.kr blackjack-1pt (0) | 2017.04.15 |
---|---|
Pwnable.kr mistake-1pt (0) | 2017.04.13 |
Pwnable.kr flag-7pt (0) | 2017.04.12 |
Pwnable.kr bof-5pt (0) | 2017.04.12 |
Pwnable.kr collision-3pt (0) | 2017.04.11 |