BJDCTF-PWN r2t4详解

本文详细解析了BJDCTF_PWN中的r2t4挑战,主要涉及利用格式化字符串漏洞来绕过栈保护机制,通过修改got表中的__stack_chk_fail函数地址,实现对程序的控制。文章介绍了64位程序的格式化字符串漏洞利用技巧,包括payload构造、地址高位处理和避免大量字符输出导致的异常。
摘要由CSDN通过智能技术生成

BJDCTF_r2t4

考点:用格式化字符串写__stack_chk_fail 函数来 bypass canary

由于涉及到格式化字符串漏洞的利用,所以基本原理和利用方法要先有一定的了解。推荐先阅读CTF-wiki:

格式化字符串漏洞原理介绍

格式化字符串漏洞利用

1.首先检查程序的基础信息

image-20200326175149836

64位程序,可以看到开启了NX和Stack防护

2.运行程序,对程序功能有基本了解

image-20200326175934609

程序基本功能:对用户输入对内容进行输出

3.用ida打开进行分析

这里截取了关键部分对代码

屏幕快照 2020-03-26 18.05.27

首先在主函数中我们可以非常清楚的看到格式化字符串漏洞 -> printf(buf, buf);

并且经过分析可以发现还存在栈溢出漏洞 -> read(0, buf, 0x38uLL); ,但是由于此程序开启了Stack保护,所以我们想要溢出就必须绕过Stack防护。要绕过Stack防护最先想到的就是泄漏canary。因为这里有格式化字符串漏洞,所以想要泄漏canary并不难。但要实现攻击我们需要先泄漏后溢

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值