diary

记录日常学习 & 生活,随缘更新
(本想整个日记啥的插件的,想了想还是直接扔到一篇文章里得了)

2021/9/7

  • 回顾 2020 参加的 RCTF 的一道 pwn 题,看上古学长的 wp:https://1ce0ear.github.io/2020/06/11/rctf2020-pwn-golang-interface/; 利用 golang 的条件竞争 bug 来绕过沙箱进行任意代码执行,文章里面还贴来 Nu1l 战队的 wp,其中有个地方很有意思,利用 mov rcx, 0x05eb909090909090 生成的汇编有 \x48\xb9\x90\x90\x90\x90\x90\x90\xeb\x05,只要能控制 pc 到 \x48\xb9 之后的位置,就可以任意执行 0x05eb909090909090 构成的代码,利用 golang 返回整数数组的语句来大量生成这样的语句,再控制 pc 就比较方便地任意执行代码了,wp 使用了这些注入的代码来调用 mprotect 然后再跳到 shellcode 中执行更复杂的代码

2021/8/31

(ghidra 分析 chrome.dll 卡了一下午)

2021/8/27

2021/8/25

2021/8/19

2021/8/18

2021/8/16

今天没啥可以分享的技术上的东西

  • 继续看 v8 源码,越看越深,有点脑昏了
  • 上周末搬家完毕,还没调整好状态,感觉现在就是在熬生活

2021/8/12

  • 公司上班真好,又有环境了,继续分析漏洞,又是进展大大的一天
  • 最近主要都在阅读 v8 编译优化部分的源码,找机会整理一下
  • 没完整学过编译原理真的吃亏,无意中查了一直看不懂代码的函数名,才发现是编译原理的东西,小小的补一下(大脑里只有散装的编译原理):
  • 支配树相关:https://blog.csdn.net/dashuniuniu/article/details/52224882
  • 构造支配树的一种方法:https://www.cs.rice.edu/~keith/EMBED/dom.pdf

2021/8/11

2021/8/10

2021/8/9

(周末一直宅着摸鱼,太惭愧了)

  • 继续分析之前 v8 漏洞(emmm,毕竟是工作内容,好像不能说太多),看了一整天的源码,思绪高涨,发现了很多没注意的细节,然后又卡壳了
  • 参考了 Sakura 前辈的文章:https://buaq.net/go-33711.html (这篇文章搬运自 Sakura 前辈的博客,但是在前辈的博客上找不到原文了),看了这篇文章消除了之前对 Node 的 use 结点的困惑,大致就是有边 A->B,A 是 B 的 input,B 是 A 的 use
  • RARctf 上线看了下题,貌似不是很难,逆了一下一道题,把 ida 的分析文件交给学弟就下线了

2021/8/6

第一记,顺带总结下之前几天的事情

  • 上次复现 Google ctf 的题目,在调试 release 版 chrome 的时候没法断在 v8 的进程里,第二天就找到解决方法了,本想总结一篇文章,但是太简略了没必要,简述就是启动 chrome 的时候加上参数 --renderer-startup-dialog,这样 chrome 的渲染进程(v8 引擎所在进程)会暂停,ps | grep chrome 找到启动参数带有 --type=renderer 的 chrome 进程,这个就是负责解析 js 的进程,gdb attach 上去,设置好断点什么的,continue 就行了

  • 实习从开始分析了个 v8 漏洞,太菜了,重点没找准,还在继续分析(今天实验室的大佬给我指点迷津,分析的漏洞又有新头绪了)

  • 最近在看 chrome Mojo 的东西,跟着文档写 demo,看看相关的漏洞。在 https://github.com/allpaca/chrome-sbx-db 上看了下几个 UAF 的 issues,有些 UAF 都和类成员维护了一个 RenderFrameHost 对象的裸指针有关,这个指针会在页面关闭的时候释放,但是维护这个指针的类对象(基本是 Mojo 的 interface)的生命周期有可能未结束,之后在这个类对象使用该裸指针的时候就会造成 UAF,尝试着用这个特点去审计了一下源码找找有没有相似的问题(当然莫得发现)

  • 今天看了 360 Alpha Lab 在 blackhat 上的演讲ppt https://i.blackhat.com/USA21/Wednesday-Handouts/us-21-Leecraso-Put-In-One-Bug-And-Pop-Out-More-An-Effective-Way-Of-Bug-Hunting-In-Chrome.pdf ,这里就提到了 Mojo 相关的类维护一个 RenderFrameHost 对象的裸指针造成的 UAF 问题,以及如何使用 Codeql(好东西)去发现相似的问题。回头看看之前的 UAF,原来有几个都是 Alpha Lab 报告的,学到许多。ppt 后半部分没看懂,太菜了我

  • 还看了点 fuzz 的东西,学习下原理,emmm,发现 fuzz,符号执行,污点分析好像都多少和编译原理沾边,编译原理没完整学过,有点难理解