ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Stack6 풀이
    System hacking training/Protostar 2018. 2. 16. 21:20

    [문제]



    문제를 보면 쉘코드를 올려서 문제를 풀 수 없도록 되어있네염


    0xbf로 시작하는 모든 주소는 예외처리에 걸리기 때문이지요~ㅎ


    하지만 취약점은 존재합니다.


    역시나 gets()를 사용하였기 때문에 bof 취약점이 존재하는데요.


    쉘코드를 쓸 수 없지만 쉘을 띄우기 위해서는


    RTL이라는 기법을 쓸 필요가 있겠네요~



    보면 메인은 별게 없고, getpath()를 보면 총 스택공간을 0x68 (dec : 104) 만큼 할당하고


    ebp-76이 buf의 시작주소임을 알 수 있습니당


    그렇다면 SFP까지 총 80 byte 더미값을 채우고 system()를 return address로 덮고, 인자값을 주기 위해 더미 4 byte 채운뒤 /bin/sh이 위치한 주소를 적어주면 system("/bin/sh")가 실행되어 문제를 풀 수 있습니다.



    따라서 system()의 주소를 구하고



    코드 섹션에서 키보드로 입력할 수 있는 아스키값 하나 잡고


    ./(아스키값) 이라는 실행파일에 /bin/sh를 카피하여 쉘이 실행되도록 만들고, 환경변수 PATH에 현재 위치를 등록함으로써


    해당 아스키값을 실행하면 쉘이 실행되도록 만들어주었습니다.


    여기서 저는 0x44 == D 를 이용하였습니다. (주소는 0x80480e4) 



    예상했던대로 쉘을 실행시킬 수 있었습니다.

    반응형

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

    heap1 풀이  (0) 2018.12.21
    heap0 풀이  (0) 2018.12.21
    Stack4 풀이  (3) 2018.02.04
    Stack3 풀이  (0) 2018.02.04
    Stack2 풀이  (0) 2018.02.04
Designed by Tistory.