ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Stack1 풀이
    System hacking training/Protostar 2018. 2. 3. 21:00

    [문제]



    [풀이]


    역시 stack0와 같이 modified 의 값을 변경해야 하는 문제인데 다른점은 if 문 참 조건이 modified 의 값이 0x61626364 이다.


    또 다른점은 이 문제의 취약점은 strcpy()에 의해 bof가 발생한다는 점이다.


    strcpy()는 문자열의 길이를 검사하지 않는다.


    정확한 계산을 위해 gdb로 열어본다.


    소스 코드가 주어졌기 때문에 분석은 어렵지가 않다.


    역시 esp+0x5c 가 modified esp+0x1c 가 buffer 시작 위치다.


    [Stack]


    [low address]    | char buffer[64] | int modified | SFP | RET |    [high address]


    이전 문제와 동일하다.


    따라서 페이로드를 (python -c 'print "A"*64+"\x64\x63\x62\x61"';cat) | ./stack1 이렇게 작성하면 될줄 알았는데 이상하게 오류가난다..



    오류 내용은 추후 찾아봐야겠다.


    modified의 값이 0x61626364만 되면 문제는 풀린다.


    따라서 



    이런식으로 풀었다.


    A를 64개 출력해서 복사해서 stack1의 인자값에 붙여넣는다.


    따라서 이 0x61626364(아스키 값 adc)를 리틀엔디언 방식으로 넣어줬다.

    반응형

    'System hacking training > Protostar' 카테고리의 다른 글

    Stack6 풀이  (0) 2018.02.16
    Stack4 풀이  (3) 2018.02.04
    Stack3 풀이  (0) 2018.02.04
    Stack2 풀이  (0) 2018.02.04
    Stack0 풀이  (0) 2018.02.03
Designed by Tistory.