【Pwn】2019安洵杯线上赛 Heap

本文介绍了2019年安洵杯线上赛中的一道Pwn题目,涉及程序的全保护开启情况。通过分析,发现在bannar函数中存在的格式化字符串漏洞可用于泄露代码段基址和Libc地址。此外,edit函数存在一字节溢出,能修改next chunk的size,由于chunk指针位于bss段,因此考虑利用unlink技术。然而,由于Full Relro的存在,直接劫持malloc_hook不可行,需要在unlink过程中规避特定检查。

一道常规的pwn题,查看程序保护。
在这里插入图片描述
保护全开。分析程序发现bannar函数有格式化字符串漏洞,可以用来泄露代码段基址以及Libcdi地址,edit函数有一字节溢出,可以修改next chunk的size,且chunk指针存储在bss段上想到unlink。由于开了Full Relro所以直接劫持malloc_hook,unlink的时候注意绕过以下check。

if (__builtin_expect (chunksize(P) != prev_size (next_chunk(P)), 0))      \
      malloc_printerr ("corrupted size vs. prev_size");               \
// fd bk
if (__builtin_expect (FD->bk != P || BK->fd != P, 0))                      \
  malloc_printerr (check_action, "corrupted double-linked list", P, AV);  \

  // next_size related
              if (__builtin_expect (P->fd_nextsize->bk_nextsize != P, 0)              \
                || __builtin_expect (P->bk_nextsi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值