diary

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

2022/8/21

因接触 NTFuzz 这个工具的时候,看论文发现有些理论的基础我是没接触过的,查阅后知道是数据流分析的知识,然后发现了南京大学软件分析这门课程对这方面讲得比较清晰,于是开始学习了,看了一星期多点,看了八节课 ppt,做了 4 个实验,很有趣,感觉应用场景挺大的。

学习过程中也在整理笔记,等学完这门课,整理完笔记后,一波放出来(埋坑

2022/6/11

实习一个月了,搞 windows 内核,挺有意思的,学习了 win32kfull.sys 图形驱动的漏洞,以及 clfs 日志文件系统的漏洞,本想写点文章记录,想了想重复性工作太多了,就懒狗了。之前关于 linux 条件竞争的技巧想写文章,但其实说起来也就那样,不知道如何丰富内容,于是乎咕咕咕……

最近的状态都是:白天实习学 windows 内核漏洞利用,晚上看 《Linux Device Drivers》学习搞搞 linux 驱动开发,周末躺平摸鱼玩手机

2022 年也过去一半了,回顾下我目前为止都弃坑了什么东西以及学了什么东西吧

  1. 弃坑浏览器 js 引擎的漏洞利用学习(主要是 v8),没啥兴趣了,不懂的太多了,挫败感太强了
  2. 更加深入的学习 linux 内核漏洞,就复现了些漏洞(主要是内核 UAF 这种利用起来我认为比较简单的洞),其实部分复现过的洞都写了文章
  3. 学算法,数据结构,算法刷了 leetcode 的剑指 Offer 的题库,后面又摸了,最近不想多开坑,就先搁置一下
  4. 每日背英语单词,曾经认为应付英语考试不需要背单词,事实也是如此,依靠仅有的语感在考试中确实也考得不错(四六级除外),现在不一样了,学英语不再是为了应付考试,只是为了能拥有这个外语能力,便于看技术文章,从背单词开始提升下英语能力(已经坚持了 42 天啦!)
  5. 因为实习而接触 windows 内核漏洞,还是非常有意思,涉及操作系统内核层面的东西都很有魅力,学到许多,尽管我对 windows 用户态的漏洞利用,逆向方面接触的很少,但是对于刚刚入门 windows 内核的我影响不算太大,后续啥不会学啥就行

之后有打算再写点学习记录的文章,嗯~ 看情况吧,看看有没有想写的,以及看有没有精力

不想更文章就会像现在这样,水个日记证明这个站还在

2022/3/30

最近在学习 linux kernel,尝试复现一些真实的漏洞(文章还没写 咕咕咕

在之前的内核中,常用到 userfaultfd 来提高条件竞争漏洞利用的成功率,但是在比较新的版本内核中,userfaultfd 的系统调用不能被普通用户所使用了,不过最近有利用 fuse 即用户态文件系统来提高条件竞争利用成功率的方法,具体可以看下面的文章:

2022/2/25

寒假摸了,监督 HCTF-HGAME 线上赛,D3CTF 出题,测题,期间还跟着打打 CTF,学了下 MIT 的操作系统课程 6.S081,重新审视下 OS 这门课

v8 的连载文章,连载速度都比我勤奋

还暂缓返校,在家摸鱼,零碎时间搞学习,陆陆续续填坑(以及丢弃没必要的坑,专心于一两件事情

2021/12/27

学期末了,考试提前有点慌,忙着应付学业,以及经常摸鱼,很多东西没学上。总结下这两个月都干了啥吧

  • 零零散散学了点安卓,日常看看安全技术文章的推送
  • 跟着 fuzzing101 做了几个 lab,感觉收获不大
  • 看了看关于 v8 的一个比较友好的连载文章:https://www.anquanke.com/post/id/253048
  • 打了场浙江省省赛,混了个一等奖
  • 《加密与解密》看了一大半,不过这学期看不完了
  • 《Effective Modern C++》 很早就看完了,还是非常不错的一本书
  • 上周打了场 ByteCTF Final,0 输出了,wp 出来后复现了 6 道有意思的 mobile 题
  • 昨天和今天打了场 SCTF,貌似大佬们都关注 kernel 啥的难题去了,没发现有两道只需要散装编译原理以及一些 bison 写词法分析和语法分析的知识就能做的题,分别混了个一血和二血,然后还有一道一血 ROP open read 爆破 flag 的题,今天围观队友上分,然后摸鱼
  • 还打了几场比赛,emm,明明省赛过后该淡出了,可是看到队友人太少没法打,只好继续帮帮忙了

2021/10/21

这学期感觉在多线程学习,啥都学,像回到了大一努力学习加入协会的样子

  • 《加密与解密》,才看了前四章,内容还比较基础,主要是工具的介绍还有简单的逆向技巧,希望能坚持看完
  • 协会购书整了本《Effective Modern C++》,书不是很厚,今天一下午就看了几章了。这本书还是不错的,用非常简单的语言和例子讲述现代 C++ 常用的特性,如果只是学习了 C++ 语法皮毛,没怎么接触过现代 C++,例如把 C++ 当成 C with class,那么你一定需要这本书
  • 前几天在 ByteCTF 初赛里遇到了 3 道安卓 pwn 题(插句嘴:虽然分类是 pwn,但我认为这属于安卓逻辑漏洞吧),看了看赛前的技术分享,磕磕碰碰做出了其中两道,队友很猛,最后关头杀入前 20 进入决赛,学弟妹们有机会去北京打线下了(老赛棍就不抢线下旅游机会了)。借着这两道安卓题,最近也开始学安卓开发(是的,做出两道题的我一点也不会安卓),先学安卓开发,再搞安卓的安全问题
  • emmm,浏览器漏洞相关的学习,最近也没怎么深入接触呢,这学期有的是时间,都可以搞,都可以学!

2021/10/6

  • 这几天给电脑配环境,尽量整得舒适点,整了很久,该开始进入学习技术的状态了
  • 这学期打算学习《加密与解密》这本书,买了一直吃灰,也该看看了,希望不咕

2021/9/20

  • 在9月17号结束了两个多月的实习,在暑假实习期间还是学到了东西,分析漏洞的时候,不仅要关注漏洞怎么利用本身,也要去学习软件开发者设计的思路,去理解为什么会产生这样的问题,从而去发现新的问题,以及思考怎么去规避这类问题的产生,蛮有意思的,在安全这方面还有很长的路要走呢。
  • 今天也是回到学校的第二天了,中秋放假,这两天也是在摸鱼,还没想好这学期要干点什么,先等等上课吧

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,符号执行,污点分析好像都多少和编译原理沾边,编译原理没完整学过,有点难理解