安洵杯2023 harde_pwn

admin 2023年6月13日16:28:27评论57 views字数 606阅读2分1秒阅读模式

这个比赛我没有参加,有位师傅扔了这个题过来就做了一下,题目给的libc版本是Ubuntu GLIBC 2.35-0ubuntu3,但是我没有环境,用的更高的版本Ubuntu GLIBC 2.35-0ubuntu3.1,不过攻击手法大同小异。这个题首先是绕过随机数,然后无限非栈上格式化字符串

首先看main

安洵杯2023 harde_pwn

漏洞点在heap_fmt这里,所以要绕过if判断。

安洵杯2023 harde_pwn

然后进fuxk_game函数,只要满足v4=v3就行,然后看看randomm函数

安洵杯2023 harde_pwn

取了一个随机值,但是这个随机值在fuxk_game里面的第一个read可以覆盖掉,所以不用担心。绕过之后就是无限格式化字符串

安洵杯2023 harde_pwn

安洵杯2023 harde_pwn

在堆上的格式化字符串漏洞,一般看到了这个打法有很多我举几种:

1、可以打内部函数的返回值(printf,strlen等等)

2、打libc的got表(保护全开也可以打,这里可以直接打strlen在libc的got)

3、printf打堆

4、_rtld_global(这个我觉得是最简单的)

我这里就一把嗦了

安洵杯2023 harde_pwn

详情可以看看我之前写的_rtld_global攻击,为什么这里打这个比较方便呢,是因为栈里面存了这个地址

安洵杯2023 harde_pwn

所以我们配合格式化字符串直接修改(printf,strlen,write的地址都可以,fini_array也可以只不过要改ptr,只要能够解析到上面去就行),打法很多,不限于我以上攻击方式。

原文始发于微信公众号(由由学习吧):安洵杯2023 harde_pwn

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月13日16:28:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安洵杯2023 harde_pwnhttps://cn-sec.com/archives/1803767.html

发表评论

匿名网友 填写信息