这学期有操作系统实验课,第一课就是要求在Linux内核中实现一个系统调用,显示学号。
由于系统调用不能通过加内核模块来实现,因此必须要拉取内核源码并编译。
我想着正好我没有做过内核题,也没有配环境,于是决定借此机会配置一个可调试的内核。
正好遇到能源比赛的题中发现当write
的size很大时,写的字节数是0x800的倍数,
而非对齐到内存页边界上,直接启动内核源码调试分析!最后发现...
-
初探Linux内核调试
-
逆向操作系统实验课的rust评测程序
我们操作系统实验课的配套任务有一个专门的评测程序来判断是否通过, 就像oj一样。然而,他是在本地评测的,测完需要我们复制结果到平台上, 整个程序是用rust写的,不仅需要权限,而且报错也很抽象,让我用得很恼火。
file
一看,竟然没剥符号!直接逆向启动,还原处理逻辑,手写注册机实现任意题目 token输出... -
从 Vim 到 NeoVim:感知不强
Vim原来的功能固然很强大,但是总有人说,现在是时候把Vim换成新时代的NeoVim了。话虽如此,但是要想把NeoVim配得和我现在用的Vim一样丝滑,就需要花大量的时间调配置。但当我全部配完后,却发现好像和之前配的vim差别并不大...
-
DiceCTF 2025 - r2uwu2s-resort
通过随机数预测和计算偏移,控制bunny hp,实现对返回地址的修改,利用OneGadget获取shell。
-
国赛 x 长城杯 半决赛
本次国赛暨长城杯半决赛,我们0RAYS战队人人有输出,最终取得了团体第14名的成绩。以下是我在比赛中的一些题解。
-
国赛 x 长城杯 初赛 - Anyip
通过控制队列的
rear
和树节点,实现了对logname
的覆盖,最终输出flag。 -
国赛 x 长城杯 初赛 - avm
利用程序逻辑错误实现越界存取,通过ROP链获取shell。
-
国赛 x 长城杯 初赛 - anote
通过堆溢出覆盖虚表并调用后门地址,成功获得shell。
-
优化一些 msys2 上 git-sdk 冗余的东西
通过编写
rm-git-sdk
函数删除git-extra
包中引发错误的profile,解决了Git for Windows SDK启动时的快捷方式创建和zsh补全错误。 -
TPCTF 2025 - where is my rop
利用
login.cgi
的Authorization头溢出漏洞,通过构造payload实现命令注入,最终获取flag。