Pwn-CTF 2018红帽杯redhat GameServer题目writeup

开始前的例行叨叨:

学pwn萌新,欢迎交流赐教~



先放一波题目:

我传了github上 pwn2就是题目了。( 若有侵权,请博客留言立马删除)

https://github.com/staticStr/ForCTF/blob/master/pwn2



来看看这个程序是做什么用的

功能很简单,输入名字,职业,就会问你是否要修改,填Y修改,写一个新的进去。

ida打开分析一波,顺手把变量名能改就改了,分析看图吧。



开始想办法溢出

从图里看到了溢出点,是read函数的参数nbytes可控,溢出s变量。


那如何控制nbytes呢?

nbytes是snprintf函数的返回值,我们看一下snprintf这个函数。


snprintf这个函数用来格式化字符串,把name和occ会填入%s %s的位置中,拼成字符串,赋给s

若拼好的字符串长度大于第二个参数限定的0x100,返回值就会变成预计写入的长度。

也就是说,若字符串把name和occ拼进去后变成了0x200长度,那么snprintf的返回值就会是0x200,若出错返回-1。

那么可以控制输入的名字和职业,控制nbytes的长度了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值