-
pwnable.kr randomPwnable/Pwnable.kr 2017. 1. 23. 13:52
우리가 입력한 key와 rand로 생성한 random변수를 xor한 값이 0xdeadbeef라면 flag가 출력이된다.
rand를 할 떄 시드값이 똑같기때문에 rand로 나오는 랜덤값은 항상 동일하다.
gdb를보면 rand로 만들어낸 값(rbp-0x4)를 eax 레지스터에 값을 넣는다. 그럼 이제 우리는 rand로 만들어낸 값이 무엇인지 알수있다 !
scanf로 입력받기 전에 break를 걸고 실행시켜서 rbp-0x4에 값을 봣더니 rand값이 있었다.(b*main+21를 해서 eax 레지스터에 들어가 있는 값을 봐도 rand값이 있을것이다.)
우리는 이제 xor를 해서 0xdeadbeef가 나오게 하는 값을 알아내야된다. 초등학생? 중학생? 떄 1+x=3 이런 수학 문제가 있었을것이다. 우리는 x를 x=3-1 이런식으로 바꿔서 x값을 구할 수 있었다. 이 key값도 이런식으로 구할 수 있다. " key ^ 6b8b4567 = deadbeef " 이것을 key=deadbeef^6b8b4567 이런식으로 하면 key값을 구할 수 있다. 이것을 계산기로 xor 해보면 " b526 fb88 " 값이 나온다. key값을 입력할 떄 16진수 입력이 아닌 10진수 입력을 받기 때문에 저 값을 10진수로 바꾼 후 key값을 입력하면 플래그가 나온다.
'Pwnable > Pwnable.kr' 카테고리의 다른 글
pwnable.kr lotto (0) 2017.01.23 pwnable.kr shellshock (0) 2017.01.23 pwnable.kr passcode (0) 2017.01.23 pwnable.kr flag (0) 2017.01.23 pwnable.kr bof (0) 2017.01.23