ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • level11
    war game Write up/ FTZ 2018. 10. 28. 00:57

    음,, 이 문제는 FTZ를 하면서 버퍼오버플로우에 대한 기초를 알려주기 위한 문제라고 보고 풀었다.



    먼저 ls를 한 후에 파일들을 살펴본다.




    attackme라는 프로그램이 존재하고, hint파일이 존재한다.

    위의 코드를 간단하게 분석해보면

    setuid가 걸려있고 str이라는 string 변수는 256byte를 가진다.

    argv[1]을 str에 카피하고 그것을 출력해준다.


    attackme를 실행할 때 인자값을 함께 넣어줬을 때 정상적으로 스택에 들어가는 것을 확인할 수 있다.



    이 파일을 먼저 tmp/ 폴터에 카피한 후 gdb로 분석을 해보자.

    main+3까지는 str 이 스택에 들어가는 값이다. 0x100은 256이고 0x8은 8 따라서 더미값은 8byte이다.

    strcpy 함수 밑에 main+53을 브포로 잡고 값이 들어가는 주소를 확인한다.


    들어가는 주소는 0xbfffec70 이다.

    이것을 보면 268byte의 값을 넣어주면 RET 주소까지 건들수 있다.

    또 여기서 한번 더 스택에 관해 보면 스택위에 몇 가지가 더 있습니다


    여기서 봐야 할 곳은 env 즉 환경변수 부분입니다.


    바로 환경변수에 쉘코드를 입력해주면 바로 스택에서 환경변수로 올라가게 됩니다.

    getenv라는 함수를 사용해 주소값을 출력해주고 EGG라는 환경변수를 설정해준다.(여기서는 환경변수를 정하는 부분을 못찍어서 ..사실 못찍고 넘겼는데 다시 찍기 싫어서 /..죄송합니다._)


    EGG라는 환경변수가 존재하는지 다시 확인해보고 path를 실행시키면 주소가 나타납니다.


    이것을

    요렇게 인자로 넘겨주면 짜잔!!!!!

     


    'war game Write up > FTZ' 카테고리의 다른 글

    level13  (0) 2018.11.01
    leve12  (0) 2018.11.01
    level10  (0) 2018.10.09
    level9  (0) 2018.10.07
    level8  (0) 2018.10.07
Designed by Tistory.