ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Stack 4]
    System/Protostar 2018. 2. 2. 23:44

    [Stack 4 Code]



    [Stack 4 실행]



    코드는 buffer를 입력받고 끝난다.

    BOF를 일으켜 win()를 실행시키면 되는 문제같다.

    우선, A를 65개 넣어봤지만 아무 반응이 없다.

    gdb로 열어봐야겠다.


    ==========================================================


    문제를 풀기 위해선 EIP레지스터를 알아야 했다.


    EIP란

    Instruction Pointer로

    다음 실행될 함수의 주소값을 가지고 있는 레지스터다.


    따라서, EIP공간까지 BOF를 일으켜서 

    win()의 시작 주소값을 넣어주면 되는 문제다.


    [Stack4 main]


    gets함수가 호출되는 부분에 BP를 걸고 실행을 시킨 후

    AAAA를 입력해봤다.



    보면 buffer의 주소값이 0xbffff760임을 알 수 있다.

    그럼 이제 EIP의 주소값을 알아보자



    EIP = 0Xbffff7ac



    EIP[0xbffff7ac] - ESP[0xbffff760] = 76

    따라서, ESP에서 EIP까지의 offset은 76이다.

    이제 win함수 주소값만 알아내면 된다.



    win()의 주소값은 0x080483f4다.

    080483f4를 [ESP+76] 다음에 넣어주면 win()가 실행될거다.



    win()함수가 실행돼 code flow successfully changed가 실행된 것을 볼 수 있다.




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

    [Stack 7]  (0) 2018.02.10
    [Stack 6]  (0) 2018.02.10
    [Stack 3]  (0) 2018.02.02
    [Stack 2]  (0) 2018.02.01
    [Stack 1]  (0) 2018.02.01

    댓글

Designed by Tistory.