ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pwnable.kr random
    Pwnable/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
Designed by Tistory.