ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FTZ 13번 Write-up
    표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 5. 04:47

    혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다.


    이번문제 FTZ 13번의 코드이다.

    strcpy로 인한 스택 오버플로우 취약점이 보인다.

    하지만 이전 문제들과 다른점이 있다.

    바로 i 라는 변수값이 0x01234567이 아니면 프로그램이 종료된다.

    마치 Stack Canary 처럼 뭔가 버퍼의 값이 바뀌는 것을

    코드를 통해 체크하여 종료시키는 느낌이다ㅎㅎ




    그렇기 때문에 버퍼오버플로우를 이용하면서 

    i의 값은 0x01234567로 가져가면 될 것 같다.


    4번째 줄에서 볼 수 있듯이 ebp-12에 0x01234567의 값이 채워짐을 알 수 있었고

    저 주소가 변수 i라는 것을 알 수 있었다.





    strcpy에 breakpoint를 걸고 버퍼의 크기보다 약간 적은 값 1000을 넣어보았다.

    ret 주소가 0x42015574였고 그 위에 바로 0x01234567이 보였다. 


    위에서 확인된대로 0x01234567이 들어가 있다.


    어셈코드에서처럼 0x01234567은 ebp-12(변수 i)의 값과 비교하고 있었기 때문에

    버퍼오버플로우로 다른 값을 채워주면서 

    i 값은 그대로 유지하며 ret값을 변조하면 된다고 생각했다.






    우선 버퍼의 시작주소와 0x01234567 까지의 차이가 1036개이고 

    0x01234567(i)에서 ret까지의 거리가 12임을 알았다.






    마지막으로 eggshell을 이용해서 쉘코드 실행주소를 구했고

    필요한 모든 것을 다 구했다.


    1036개의 문자를 넣고 0x01234567 값을 그대로 넣어주어

    비교문을 건너띈 뒤 다시 12개를 채워고 ret값을 변조하도록

    진행하였더니 다음단계로 넘어갈 수 있었다!!

    반응형

    '표튜터와 함께하는 Pwnable > FTZ Write-up (11~20)' 카테고리의 다른 글

    FTZ 16번 Write-up  (0) 2019.02.05
    FTZ 15번 Write-up  (0) 2019.02.05
    FTZ 14번 Write-up  (0) 2019.02.05
    FTZ 12번 Write-up  (0) 2019.02.05
    FTZ 11번 Write-up  (0) 2019.02.04

    댓글

Designed by Tistory.