xctf-pwn-“dice_game & forgot & Mary_Morton”

dice_game

是个压缩包,解压发现有两个文件,应该一个是程序,一个是动态连接库,一看就知道很难。EP上文件是没有加壳的,我们就直接区ida分析它。是个64位的文件。
在这里插入图片描述
到这里其实我们也已经有了大致的思路,不过先看看有什么保护措施吧!
在这里插入图片描述
此时我想的是直接栈溢出,修改eip值到flag函数的地址,不过看起来是不行的。因为buf读0x50单位,整好栈为50,没有再长的输入了,差了一点。不过seed在下面。在这里插入图片描述
这样子动态链接库也有啦,此时思路讲一下,通过栈溢出修改seed的值,再根据它的链接库,生成我们本地的随机数,从而达到我们操控。这道题挺简单的(蛤!什么时候我也敢说大话了?)。
在这里插入图片描述
跑起来,运行flag就得到了。
在这里插入图片描述
这是我第一个独立不看wp并且速度最快的一次做pwn题。


forgot

这道题直接一个附件,EP了一下,发现不是压缩包(以为它要坑我)所以直接ida分析一番。就只有一个输入的地方,且明显没有栈溢出的问题,不过下面通过一下判断是可以造成栈溢出的。先看一下保护措施。
在这里插入图片描述
这些保护措施可以绕过,不妨碍我们攻击。不过我的思路有了问题,此时我想的是通过输入v2对v14产生栈溢出,不过明显不可能,它最后有一条语句是要执行它的,此时我们修改它的地址入口到flag函数里面就可以了。在这里插入图片描述
此时我们可以对其进行追踪,看看其再栈中的位置。不过再来对代码进行进一步的分析。
在这里插入图片描述
大致思路就是这个样子了。
在这里插入图片描述
说明几点,为什么是A,A的Ascll码值为65,是可以跳过case 1:中的判断的。这样子运行跑起来就可以了。
在这里插入图片描述
没有什么好说的。这里还有一种方法,就是直接溢出将v3后面的地址全都修改成system入口地址。


Mary_Morton

还是个elf文件,不做过多介绍,直接进入ida打开进行分析。
在这里插入图片描述
虽说它告诉我们有两个bug,但是我们还需要查看保护措施。在这里插入图片描述
NX保护有,金丝雀保护也有。在这里插入图片描述
不过还有一个格式化字符串漏洞,它是为了信息泄露提醒我们Canary的地址。在这里插入图片描述
首先我们要用格式化字符串漏洞进行信息泄露,然后用栈溢出漏洞进行溢出攻击。v2中存放的是Canary值,利用格式化字符串漏洞泄露主它的值,这样就再进行栈溢出就不会报错了。

格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。

在这里插入图片描述
偏移量为6,而buf和Canary差0x90-0x8位数,故输入应为%(6+(0x90-0x8)/0x8)$p这个东西的。在这里插入图片描述
跑起来运行起来它flag就有了。
在这里插入图片描述
很不容易做出来了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值