ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • leve12
    war game Write up/ FTZ 2018. 11. 1. 00:26

    와아아ㅏ아아아아ㅏ아아아 


    혼자  풀었다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,, 뭐 다른 문제도 웬만해선 다 혼자 풀었지만서도 이건 검색을 1도 안하고 풀었,, (물론 쉘코드 빼고!!!) 


    짱쉽다..ㅈㅅ 사실 11번 문제랑 다를게 없어서 그랬다는게 함정,,ㅇㅁㅇ




    먼저 attackme의 소스코드가 힌트로 주어진다. 이전 문제와 다르게 인자값으로 받는게 아닌 입력값으로 받아들인다.

    gets 함수를 써서 입력을 받는데 gets함수의 경우 값의 길이 체크를 하지 않기 때문에 취약점이 발생한다. 따라서 fgets라는 함수를 사용한다고 한다.


    먼저 str 이라는 string value에 256 byte를 할당시켜준다.  그리고 setreuid에서는 level13을 말하는 것 같다.

    입력을 받고 그것을 다시 출력해주는  프로그램이다.


    아래는 직접 실행을 시킨 사진이며 입력 값을 다시 출력시키는 것을 확인할 수 있다.



    gdb로 분석을 해보자.

    main+3까지가 str 변수에 256바이트를 할당시켜주는 것 같은데 

    0x108 -> 268 byte? 바로 더미값이 존재한다. 더미값은 8바이트 그 다음 ebp 4byte를 포함한 값이다.


    일단 gets 함수를 통해 들어가는 값을 확인하고자 브포를 잡고 실행을 시켜준다.

    그랬더니 str 변수에서 스택에 들어가는 처음 주소는 0xbffff2d0이라는 것을 확인할 수 있다.



    그 다음 main 함수의 ret addr 까지의 주소를 구해준다.

    총 268byte 이며 이를

    그림으로 표현하면



    이다.


    먼저 BOF라는 환경변수를 설정해주고 이에 대한 환경변수의 주소값을 찾아준다.



    이 문장을 기준으로 위는 환경변수가 정상적으로 등록되었는지를 확인하는 사진이고 아래는 환경변수를 출력해주는 C 코드이다. path를 실행하니 주소값이 나온다,

    이에 맞게 쉘을 짜주고 cat으로 묶어주면 정상적으로 13레벨의 쉘에 들어갈수 있게 된다.

     


    정답은 have no clue !!


    음,, 일단 아는대로 풀었지만 상당히 부족함이 느껴진다.. 열심히 공부해야겠다.

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

    level 14  (0) 2018.11.14
    level13  (0) 2018.11.01
    level11  (0) 2018.10.28
    level10  (0) 2018.10.09
    level9  (0) 2018.10.07
Designed by Tistory.