(Jarvis Oj)(Pwn) Smashes

博客分析了一个名为(Jarvis Oj)(Pwn) Smashes的程序,该程序启用了栈保护并使用gets()函数,存在栈溢出漏洞。通过覆盖argv[0],可以实现ssp leak来读取任意地址。目标是找到argv的位置,泄露0x400d21地址的内容,因为那里存在flag的备份。利用gdb找到了程序中未被修改的flag备份,并计算padding来实施攻击。
摘要由CSDN通过智能技术生成

(Jarvis Oj)(Pwn) Smashes

查看保护。打开了栈保护。看上去有点麻烦。
这里写图片描述
再来分析下程序代码。如下是主要的函数体部分。
这里写图片描述
这个函数首先让我们输入name字符串,通过gets()函数,是有溢出的,但是在输入过长的字符串时程序会abort。
这里写图片描述
并且提示 ./smashes terminated 这里其实是ssp(Stack Smashing Protector)的提示信息,而./smashes 这里是main函数参数的argv[0],所以这个参数是在栈中的,又有gets()函数不检查字符串长短,通过覆盖到argv[0],就可以构造ssp leak达到任意地址读。接下来的问题就是如何定位到argv,以及泄露什么地方的内容。通过上面的函数,有个overwrite flag的操作,将600d20处的字符串给修改了,跟到这里。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值