execve

1. execve

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 14/06/2006 - 13:17h

Olá comunidade, gostaria de saber como tenho que passar os argumentos para a syscall do execve, sei o seguinte:

eax = 0xb (numero da syscall)
ebx = "/bin//sh" (nome do programa)
ecx = "/bin//sh"+NULL (argumentos)
edx = NULL (engv)

Não sei como faço para passar os argumentos para as funções, segue o que fiz e não funcionou:

shell.s
-------------------------------------------------
xor %eax, %eax
xor %ebx, %ebx
xor %ecx, %ecx
xor %edx, %edx
push %eax
push $0x68732f2f
push $0x6e69622f
mov %esp, %ebx
mov %esp, %ecx
mov $0x0, %edx
mov $0xb, %eax
int $0x80

-------------------------------------------------

E não funcionou, dá "Segmentation Fault". Alguem pode me ajudar?
Agradeço desde já,
Slackware_10


  


2. codigo

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 06/07/2006 - 15:38h

achei a resposta pessoal, segue o codigo que fiz:

binsh.s
^^^^^^^

xor %edx, %edx
push %edx
push $0x68732f6e
push $0x69622f2f
mov %esp, %ebx
push %edx
push %ebx
mov %esp, %ecx
mov $0x0, %edx
mov $0xb, %eax
int $0x80


3. Explicação...

Helton Barbosa Santos Ferreira
HeltonBarbosa

(usa FreeBSD)

Enviado em 14/07/2006 - 08:49h

Olá...
Alguém pode me explicar o que esse código faz? Estou fazendo uns teste aqui usando o Dev-Cpp, compilei o código e deu tudo certo, mas não sei o que exatamente o código faz. Se alguém puder tirar essa dúvida eu agradeço!
Obrigado...


4. Só no linux

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 14/07/2006 - 10:50h

Cara... Tipo assim, o comando vai executar o '/bin/sh' e o windows não tem esse arquivo, segundo: o programa chama a interrupção 0xb (11 - execve) e chama o kernel pela interrupção 0x80 ( o windows não tem essa interrupção)

Explicação do codigo:

xor %edx, %edx
push %edx
push $0x68732f6e
push $0x69622f2f
mov %esp, %ebx
push %edx
push %ebx
mov %esp, %ecx
mov $0x0, %edx
mov $0xb, %eax
int $0x80

-xor %edx, %edx = limpa o registrador edx
-push %edx = colocar NULO na pilha (o valor de edx agora é nulo já que foi 'resetado' com xor
-push $0x68732f6e
-push $0x69622f2f
Os dois acima poem /bin//sh na pilha
-mov %esp, %ebx
coloca o endereço da pilha(que contem '/bin/sh') em ebx
-push %edx
-push %ebx
Isso coloca na pilha (/bin/sh)
-mov %esp, %ecx
Coloca o que tem na pilha em ecx
-mov $0x0, %edx
Coloca 0x0 em edx (ultimo parametro de execve())
-mov $0xb, %eax
Coloca o numero da interrupção em eax
-int $0x80
'chama' o kernel para executar 0xb(execve)

Para mais informações sobre execve() digite:
$ man execve

Espero ter ajudado,
Slackware_10



5. Há!!!!!

Helton Barbosa Santos Ferreira
HeltonBarbosa

(usa FreeBSD)

Enviado em 14/07/2006 - 12:36h

Então é por isso que ele não fez nada no meu Rwindows... Se vc tiver códigos que rodem em windows, posta ai pra mim, valeu???
Obrigado pela explicação.....


6. Re: execve

Richard Fmond
0x31

(usa Slackware)

Enviado em 11/01/2007 - 22:47h

Slackware_10: Podes-me tirar uma duvida?
Pk é que tu colocas-te:
-push $0x68732f6e
-push $0x69622f2f
em vés de \"/bin/sh\"?
obrigado



7. Re: execve

Eduardo
duda_syn

(usa Slackware)

Enviado em 12/02/2007 - 22:32h

Esses valores ai no Push sao equivalentes a essa string ai /bin/sh
em hexadecimal


8. re: windows, Altera o código

Eduardo
duda_syn

(usa Slackware)

Enviado em 12/02/2007 - 22:35h

po altera o codigo pra windows,
pra chamar command no rwindows 98 ou cmd no xp, pra efeto de aprendizado..
esse codigo chama o shell no linux.. nada a v com o windows..






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts