NENote of Exploiting


2006-11-14 : Hello Payload1

 このペイロードはコマンドライン上に「hello world!」と出力するペイロードである。アセンブリ言語にはGASを利用しており、実験は成功した。

[SC] hello.s


.globl main

main:
    jmp    ONE

TWO:
    popl   %ecx
    xorl   %eax,    %eax
    xorl   %ebx,    %ebx
    xorl   %edx,    %edx
    mov    $0x4,    %al
    mov    $0x1,    %bl
    mov    $0xd,    %dl
    int    $0x80
    xorl   %eax,    %eax
    movl   %eax,    %ebx
    xorl   %ebx,    %ebx
    inc    %eax
    int    $0x80

ONE:
    call TWO
    .string "Hello world!\n" 

Exemplification

 はじめに、ソースコードをコンパイルする必要がある。次のように「gcc」コンパイラを利用する。

defolos@glazheim:~$ gcc hello.s

 次に、この実行可能なプログラムをバイトコードに変換する。そのために次のように「objdump」と呼ばれる16進数エディタを使用した。

defolos@glazheim:~$ objdump -d a.out|grep \<main\> -A 30

 次に、16進数で表示された機械語をC言語のexploit( [SC] exploit.c)に次のように埋め込む。


char shellcode[]=
"\xeb\x18\x59\x31\xc0\x31\xdb\x31"
"\xd2\xb0\x04\xb3\x01\xb2\x0d\xcd"
"\x80\x31\xc0\x89\xc3\x31\xdb\x40"
"\xcd\x80\xe8\xe3\xff\xff\xff"
"\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x21\x0a"
;

 最後に、このexploitプログラムをコンパイルして実行する。正常に動作することが確認できた。

defolos@glazheim:~$ ./exploit.exe
-------exploit---------------
Hello world!

Issues

 ペイロードに利用価値が無い。

Copyleft (C) 2007 Len. All Rights Not Reserved.