ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Level2 (gremlin -> cobolt)
    $ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:12

    소스 코드를 확인해 보겠습니다.

     

    소스코드가 매우 level1과 같습니다.

     

    똑같은 방식으로 풀이을 해보겠습니다.

     

    이번에도 dummy 없이 정확히 16인것으로 보아 

    Buffer + SFP + RET 형식으로 되어 있습니다.

     

    환경변수에 쉘코드를 입력해 보겠습니다.

     

    사용한 쉘코드는 25바이트의 쉘코드 입니다.

    \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80

     

     

    해당 sh이름의 환경변수의 주소를 찾기 위해서 코드를 작성해 보겠습니다.

     

    gcc -o 를 이용해서 컴파일해서 실행해 보겠습니다.

     

    페이로드를 작성해 보겠습니다.

     

    login : cobolt

    Password : hacking exposed

     

     

    ==============================================================================================

    환경 변수를 이용한 문제 풀이가 아닌 RET의 아래영역을 이용한 문제 풀이입니다.

     

    해당 문제는 ebp-16 밖에 할당이 되어 있지 않습니다.

    그래서 25바이트의 쉘코드를 직접 입력으로 사용할 수 없습니다.

     

     

    buffer[16] + SFP 에 dummy 값을 넣고 RET에 &shellcode 즉, 쉘코드의 주소를 입력해서 쉘코드를 RET의 아래영역에 입력해서 호출해 오는  형식으로 문제를 풀이 할 수 있습니다. 

     

    일단 쉘코드가 들어가는 주소를 알기 위해서 core dump를 만들어 봅시다.

     

    먼저 cobolt 파일을 가지고 gdb를 사용할 수 없기 때문에 파일명의 길이가 같은 파일을 cp를 이용해서 만들어 보겠습니다.

    그리고 A 16개 B 4개 C 4개를 넣고 그 뒤에 쉘코드 대용으로 S 25개를 입력해서 core dump를 만들어 보겠습니다.

     

    53인 쉘코드 첫 주소가 다음과 같이 0xbffffc56인 것을 알 수 있었습니다.

     

    그래서 이제 페이로드를 작성해 보겠습니다.

     

    login : cobolt

    Password : hacking exposed

    '$ 시스템 해킹 $ > Los Of BufferOverflow' 카테고리의 다른 글

    Level6 (wolfman -> darkelf)  (0) 2020.01.01
    Level5 (orc -> wolfman)  (0) 2020.01.01
    Level4 (goblin -> orc)  (0) 2020.01.01
    Level3 (cobolt -> goblin)  (0) 2020.01.01
    Level1 (gate -> gremlin)  (0) 2020.01.01

    댓글

Designed by Tistory.