C言語でexecveを用いてシェルを起動する
execveシステムコールを呼び出す処理をアセンブリで書く
コンパイラはNASM
BITS 32
jmp short two
one:
pop ebx ;
xor eax, eax ;
mov [ebx+7], al ;
mov [ebx+8], ebx ;
mov [ebx+12], eax ;
lea ecx, [ebx+8] ;
lea edx, [ebx+12] ;
mov al, 11 ;
int 0x80 ;
two:
call one ;
db '/bin/shXAAAABBBB' ;
コンパイル用のMakefile
exec_shell_c:
gcc exec_shell.c
exec_shell_s:
nasm exec_shell.s
参考
- HACKING: 美しき策謀 脆弱性の理論と実際 (オライリー・ジャパン)