ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 특이점이 온 random
    Wargame/Pwnable.kr 2019. 12. 29. 11:10

     

    이 문제를 최근에 다시 풀어본 결과, 3039230856 을 입력하면 eax가 0으로 되어 있는것을 확인할 수 있었다.

    따라서, 문제 풀이 방법을 살짝 바꿔보았다.

     

    unsigned int 변수에 입력을 받으므로, 음수를 입력받으면 !(입력받은 값) 이 되는 것을 확인 할 수 있다.

    즉, -2를 입력하게 되면 0xfffffffe 를 나타낸다. (0 -> 1, 이후 1을 더해주는 연산을 취함.)

    2
    0000 0010
    
    -2
    1111 1110

     

    random 값이 0x6b8b4567 이었고, key 값을 구하는 과정에서 xor 연산은 교환법칙이 성립한다.

    random ^ key = 0xdeadbeef
    random ^ 0xdeadbeef = key

     

    key 값은 0x‭b526fb88‬, 10진수로 ‭3039230856‬ 이다. 이 값이 나타나는 음수 값을 이용해보자.

    NOT(‭3039230856‬) -> 0x4ad90477 앞의 ffffffff 생략
    NOT(0x4ad90477) -> -1255736440(‭0xb526fb88‬)

    이므로, -1255736440 이라는 값을 입력해주면 eax에 정상적으로 0x‭b526fb88‬ 값이 들어갈 것이다.

    'Wargame > Pwnable.kr' 카테고리의 다른 글

    passcode  (0) 2019.12.27
    Random  (0) 2019.06.15
    flag  (0) 2019.06.14
    bof  (0) 2019.06.14
    collision  (0) 2019.06.14

    댓글

Designed by Tistory.