这个比赛我没有参加,有位师傅扔了这个题过来就做了一下,题目给的libc版本是Ubuntu GLIBC 2.35-0ubuntu3,但是我没有环境,用的更高的版本Ubuntu GLIBC 2.35-0ubuntu3.1,不过攻击手法大同小异。这个题首先是绕过随机数,然后无限非栈上格式化字符串。
首先看main
漏洞点在heap_fmt这里,所以要绕过if判断。
然后进fuxk_game函数,只要满足v4=v3就行,然后看看randomm函数
取了一个随机值,但是这个随机值在fuxk_game里面的第一个read可以覆盖掉,所以不用担心。绕过之后就是无限格式化字符串
在堆上的格式化字符串漏洞,一般看到了这个打法有很多我举几种:
1、可以打内部函数的返回值(printf,strlen等等)
2、打libc的got表(保护全开也可以打,这里可以直接打strlen在libc的got)
3、printf打堆
4、_rtld_global(这个我觉得是最简单的)
我这里就一把嗦了
详情可以看看我之前写的_rtld_global攻击,为什么这里打这个比较方便呢,是因为栈里面存了这个地址
所以我们配合格式化字符串直接修改(printf,strlen,write的地址都可以,fini_array也可以只不过要改ptr,只要能够解析到上面去就行),打法很多,不限于我以上攻击方式。
原文始发于微信公众号(由由学习吧):安洵杯2023 harde_pwn
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论