本站已正式迁移至 https://rocketma.dev 。原先网站托管在 GitHub Pages 上,在国内部分地区直接无法访问,每次和别人分享博客地址, 需要别人开梯子又不太好意思,于是我将博客迁移到了 Cloudflare Pages,再怎么说 Cloudflare 在国内至少能打开。
-
字节决赛北京游
决赛的形式是作品答辩,字节给了一系列选题,我们Emmmmmm2024选了蓝军:隐秘的通道,因为这个选题看起来最像传统的C2。但是大家都没什么时间做,最后只是糊弄糊弄。但是对我来说,这是极好的公费旅游机会!直接飞北京,见识见识其他队的成员,其他队的作品,与北京。
-
古老的基础设施:使用邮件提交补丁
最近Arch上的debuginfod更新了,也带来了bug...还好只是shell脚本的错误,还在我的能力范畴之内。花了一段时间如何通过邮件向上游提交补丁,最终解决了这个bug。
-
DASCTF 2024金秋十月 ChromeLogger
在 ctf-wiki 上,记载了多个堆实现,除了常见的 ptmalloc,还有 tcmalloc 和 jemalloc, 于是我一时兴起,找了找有关文章。其中 jemalloc 比较难利用, 因为在拿到的堆块附近没有任何堆的元数据,反倒是 tcmalloc 在堆块附近有很多堆指针。于是我就随便改了一个指针,然后分配 2 次同样大小的堆块就实现了任意堆块分配。
-
DASCTF 2024金秋十月 WhereIsMySauce
debuginfod 是二进制调试当中非常好用的工具,可以从网上自动拉取调试符号和源码。题目名叫做 WhereIsMySauce,小小玩了一个谐音梗,Sauce 谐音 source, 实际上是在暗指 flag 就放在源码里。由于 debuginfod 是可以分发源码的, 而源码是最便于显示 flag 的方式,因此这道题的终极目标就是找到藏有 flag 的源码。
-
sctf2024 - GoCompiler
利用Go语言编译器中的
printf
漏洞,通过%hhn
逐字节修改内存,实现ROP链,最终执行/bin/sh
以获得shell。 -
sctf2024 - vmCode
编写字节码利用
open
、read
、write
系统调用,巧妙利用栈布局避免数据错位,成功获取flag。 -
sctf2024 - kno_puts
通过替换可写的
poweroff
命令为cat /flag
,在以1000身份运行的shell结束后成功用root的身份获取flag。 -
Ptrace syscall 初学者常见困惑解答
在羊城杯2024的 Hard Sandbox 中,有
RET_TRACE
的沙箱,因此如何构造rce并绕过限制的问题,就来到了如何使用ptrace上。ptrace作为Linux的syscall,已经存在很久了,相关的文档也很完善,具体细则可以通过man ptrace
查看,这篇博客主要讲讲一些值得注意的点。 -
羊城杯2024 - logger
通过栈溢出覆盖返回地址并修改字符串内容,将"Buffer Overflow"替换为
/bin/sh
,借catch
块调用system
获得shell。