ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pwnable.tw Start
    Pwnable/Pwnable.tw 2017. 1. 31. 22:57

    포너블 문제를 받으면 무조건적으로 checksc.sh를 이용하여서 보호기법을 체크하는 편이여서 일단 먼저 체크를 하기로 하였다.



    일단 NX가 걸려있어서 스택을 못쓴다고한다 .. 일단 겉으로만 프로그램이 어떤식으로 돌아가는지 봣는데 Let's start the CTF: 출력하고 입력하고 끝이다.(아이다에도 이렇게 있음) 딱봣을떄 버퍼오버플로우 느낌이 낫다. 아이다로 살펴보자


    아.. 그전에 아래쪽을 보면 알겠지만 버퍼오버플로우 취약점이다. 근데 바이너리에는 아무것도 쓸수있는게 없다 .. 사실상 이 문제에서 NX가 걸려서 스택을 못쓰게된다면 .. 첫 번쨰 문제가아닐것이다. 그래서 GDB-PEDA에 VMMAP이라는 것을 다른 분을통해 알게되어서 써보앗더니  !!! 보시면 알다싶이 실행권한이 있다 ? 이 문제를 봣을떄 checksc.sh 는 어셈블리 파일에서는 살짝 이상하게 나오는것같다.






    write를 이용하여서 "" CTF : 를 출력한 후 아래쪽 LINUX - 가 있다. 프로그램을 실행시켯을떄 입력을 하였기때문에 read , gets등 입력함수일 학률이 높다. 

    그리고 mov dl 3CH -> 입력함수라면 3C(10진수로 60) 만큼 입력받는다는 뜻이 될것이다. 그 후 add esp 14h 를 하고 retn 하는 방식이다.





    이렇게된다면 스택구조는 |버퍼[16] | sfp[4] | ret[4] | 버퍼2? 스택구조가 이상하다 ..

    esp 가 ret 다음 주소부터 시작된다 .. 아마 LINUX - 가 입력함수 일것이다. 60을 입력을 받는다는 뜻이되기떄문에 EIP를 변조할수있게되는 버퍼오버플로우 취약점이 생긴다. 내가 문제를 만드는 입장이라면 60으로 스택을 딱 맞출것이다 그게 아니더라도 쉘 코드를 넣을수있는 자리는 줫을것이다. 일단 내 예상으로는 #스택구조는 |버퍼[16] | sfp[4] | ret[4] | 버퍼2[36] 일것이다. # 


    이 문제를풀때 gdb-peda를 이용하였다. gdb사진은 생략


    eip 옆 esp 시작 부분에 보면 스택 주소가 있는것을볼수있다. 우리는 write 함수를 이용하여서 이 스택주소를 leak 할수있다. 


    leak으로 구한 스택주소로 EIP를 변조하고, 간단한 NOP SLED 를 이용하면 쉘을 딸수있다. -> PWNTOOL을 연습하는 문제가 됨


    Exploit Good ! 


    쉘 따니 기분좋 .. ♥


    Exploit Code




    'Pwnable > Pwnable.tw' 카테고리의 다른 글

    pwnable.tw Spirited Away  (0) 2017.11.24
    pwnable.tw seethefile  (0) 2017.07.19
    pwnable.tw Silver Bullet  (0) 2017.06.03
    pwnable.tw orw  (0) 2017.05.31
    pwnable.tw hacknote  (0) 2017.05.29
Designed by Tistory.