32C3之PWN题目Readme的解法

本文详细解析2015年32C3 CTF中的一道300分PWN题目,通过栈溢出技巧获取flag。首先分析程序流程,然后解释如何通过栈溢出改变argv[0],并通过设置环境变量让错误信息输出到远程shell,最终成功获取flag。
摘要由CSDN通过智能技术生成
题目描述:
Can you read the flag?
nc 136.243.194.62 1024

题目下载

本题是2015年32C3CTF比赛中一道300分的pwn题目,也是我第一次在赛后看着writeup做出的pwn题目,希望下次能够在赛中做出pwn题目。话说,忙碌的工作和生活之余,学习一点安全分析的知识,也是很快乐的一件事情!

我这里所用的工具包括:IDAx64、kali2.0下的edb。
注:整个解题过程参考了多篇writeup,并非完全原创,但每一步都经过实际测试,特此说明。如有错误,请留言指出,不胜感激。

观察文件的基本情况,说明是linux下的x64程序。远程连接后可知(本地运行也可),可以输入两个字符串,分别是用户名(设为user)和红框处的内容(设为str)。

这里写图片描述

这里写图片描述

这里写图片描述

当我们在用户名处输入超长字符串时,会爆出
* stack smashing detected ”:./readme.bin terminate
由于二进制可执行程序默认的第一个参数argv[0]就是程序自身的名字,说明该题测试的是通过栈溢出的方法,将flag以报错的方式显示出来,也即如下形式。
* stack smashing detected ”:flag terminate
(当然,这个结论也是我事后通过阅读wirteup

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值