【不定期更】纯个人向音乐鉴赏与推荐
本人对音乐、乐理、电音制作等知识皆一窍不通,就是个臭打鼓的。因此本条博客是一个纯个人向音乐鉴赏与推荐!
电子音乐Glitched Universe - 削除链接:网易云
评语:世界纷繁错乱,但令人心潮澎湃的心愿永远存在。
[0:00 - 0:37 Build Up]
从空灵的女声开始,不断快速切入各种声部,包括富有动感的DnB鼓,极光般的弦乐,更具Glitch色彩的音效……然后在最后一小节提前爆发切入DROP!
[0:37 - 0:55 DROP]
宇宙,世界的绚烂。背景中心电图般爬升而又落下的像素音,坚定的女声与电声主旋律(这个lead我很喜欢),共同构成了这一副绚烂的图景!(我真的很喜欢绚烂这个词)
[0:55 - 1:00]
DROP同样在最后一小节提前结束切入下段,但没有给人任何的失落感,而是让前后的衔接更加紧密,真是优秀的设计!这里是一个激烈的过渡段,用劲爆的节奏来为DROP收尾。
[1:00 - 1:24]
一个铺垫段,glitch噪音一直在耳边回响。电声乐器重复着变强又破碎(glitch音)的过程,好似恒星爆发又突然时光倒带。
[1:24 - 2:07 Build U ...
【六星夏令营2023】个人博客搭建:基于hexo+github pages
你是否看到朋友开了微信公众号觉得很酷?你是否想分享自己的学习笔记、生活感想?你是否想拥有自己的个人主页?
那就一起来试试整个博客吧,反正是免费的不用花钱(<ゝω・)☆
方便起见,推荐在自己主系统上面配置博客,或者配置在WSL上。
软件安装请参考官方文档 | Hexo,Windows安装Git时,全程保持默认选项即可。
注意,其中命令行指令需要在你安装系统的shell上执行。如果是Windows系统的话,需要使用刚刚安装的Git所附带的Git Bash。
静态网站生成首先,在你电脑上挑一个喜欢的位置,我们会在这里存放博客的文件夹。
然后打开命令行,在这里输入(把 <folder> 替换成你想要的文件夹名):
123$ hexo init <folder>$ cd <folder>$ npm install
完成后,这个目录的文件树如下:
12345678.├── _config.yml├── package.json├── scaffolds├── source| ├── _drafts| └── _posts└── themes
其 ...
【六星夏令营2023】Linux基础#Shell
What is Shell?大家可能知道Shell的中文是壳,也可能听说过一部叫做《Ghost in The Shell》(攻壳机动队)的动漫。
在计算机的世界中,Shell指的是一类软件,允许用户和计算机进行交互。
In computing, a shell is a computer program that exposes an operating system‘s services to a human user or other programs. In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer’s role and particular operation. It is named a shell because it is the outermost layer around the operating system.
—WikiPedia
在 ...
【六星夏令营2023】Linux(Kali) 环境配置
为了和之后的网络工具介绍环节联动,Linux常见指令教学将会使用Kali进行。
Windows首先需要装一个VMware。由于夏令营的安卓逆向部分会用到与hyper-V不兼容的安卓模拟器,因此这里不推荐WSL了 (`ε´)。
VMware Workstation Player官网下载链接:VMware Workstation Player | VMware | CN
VMware Workstation Pro可以自行找链接下载(然后网上搜一个注册码),但是我们不鼓励盗版!
在安装完毕之后,我们直接下载开箱即用的Kali虚拟机,下载链接:Get Kali | Kali Linux
下载完之后,找一个好地方解压(这个Kali虚拟机需要一直保存在那个地方),然后打开VMware,在左上角的文件菜单中点击打开,找到你刚刚解压出来的文件夹中的 kali-linux-...-amd64.vmx 打开,这一步之后你就拥有了一台Kali虚拟机!
默认的账号和密码都是 kali,开始你的Linux之旅吧!
MacOS(M1/M2)请看J3rry同学编写的教程
RDT协议实现(GBN和SR)
在这学期计网的PJ中,我被迫实现了GBN协议、基于连接的全双工可信传输协议,并在此基础上改造了SR协议版本,并为其添加了基础的拥塞控制机制(AIMD)。这是Github项目仓库。
主体是gbn.py以及sr.py,API接口模仿socket设计,均能连续通过200轮测试。下面是使用例(这就是全部API了):
1234567891011121314151617181920212223# sr_server.pyfrom sr import SRSocketHOST = 'localhost'PORT = 8000s = SRSocket()s.bind((HOST, PORT))s.listen()s.accept()print('Connected by', s.address)f = open('server/recv.jpg', 'wb')while True: data = s.recv() if data == b"": # 空的数据包标识文件结束 br ...
【pwnable.tw】seethefile writeup
这次借本题入门了glibc的FILE相关机制,果然一切涉及到函数指针的设计都是灵活但危险的。
本题相关:FILE伪造、vtable伪造、fclose
漏洞分析保护情况:
12345Arch: i386-32-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x8048000)
程序大致是一个menu,可以选择以下几种功能:
open:指定文件名打开文件,将FILE*保存到bss段的fp(不允许文件名中含有flag子字符串)
read:从fp中读取0x18F个字节,并保存到bss段的magic_buffer中
write:将magic_buffer中的内容打印到屏幕上(不允许内容中含有flag、})
close:关闭fp
exit:往bss读取一串字符串(name)后,尝试fclose(fp)并退出
程序漏洞点有两个:
main函数读取选项时,使用了 scanf("%s", buf),其中buf是一个栈变量。
m ...
【TAMUctf 2023】Pwnme - linked ROP chain
当溢出长度过短无法完成完整的ROP时,一般会想到stack pivot,也就是在某个固定的、可控的地址处提前布置好ROP链,然后通过 leave; ret 或是 xchg eax, esp 等方法完成栈迁移。但在本题中,我们没有机会往已知地址写入数据,溢出大小又有限制。官方给出的方法是:通过 sub rsp, 0x18; call vul 这个非常规gadget,将提前布置好的ROP chain放在栈的高位,从而完成ROP chain的链接,我管它叫linked ROP chain。
比赛时和前辈两人看这题看了几个小时,找gadget找了很久也没做出来。比赛结束后发现了两个版本的做法,分别是官方的和Chovid99师傅的的。官方的做法比较一般,并且和我们比赛时的思路完全一致(只是我们傻了没发现那个关键gadget),因此本文主要分析官方的做法。
题目给了两个binary:
pwnme:什么函数都没有,只有一个main函数调用了libpwnme库的pwnme函数。12345Arch: amd64-64-littleRELRO: Partial RELROStack: ...
PoRE#0x5 Proj1 指北
在上PoRE前,我是Android零基础小白,Java也没写过。刚刚接触那些Lab时,虽然挑战性也是有的,但终归是小打小闹的练习性质,只是助教出的题目。
然后那天,Proj1降临了。
真实软件逆向,而且参考目标还是微信。(微信是操作系统(雾))
开始前,前辈和我说过:没有做的时候都会以为这不可能,但其实你可以的。现在做完了PJ1,我也想对后来的同学说:虽然这可能会耗费非常多的时间、精力,但我认为这是值得的!这可是复杂度超高的真实软件、商用软件、以及操作系统软件,逆向成功就已经代表了——你已经有了在安卓世界中遨游的资格。
但是,我当然不会觉得耗费时间多是PJ1的优点。我想在这里总结一些做PJ1的经验,能帮后来者节省一些时间就最好了。
工具 & 环境在做PJ1时,我们需要准备一个好的调试环境。
最好的调试环境显然是真机,因为性能足够,可以提高调试的体验。如果你有一台备用手机的话,可以尝试网上查询root方法。我的备用手机是红米K30Ultra,使用root方法是Magisk。root成功之后,推荐LSPosed模块,这是一个支持Xposed模块的框架,在安卓高版本也可以运行。Ma ...
PoRE#0x4 Frida & Android
Frida是一个几乎全平台(Windows、MacOS、GNU/Linux、IOS、Android)的代码插桩软件。它能够把谷歌的V8引擎(JavaScript、WebAssembly引擎,即解释器)注入到目标进程中,允许我们编写的JS脚本拥有对于整个进程内存空间的访问权、Hook进程里的代码、直接调用它们等……
Frida功能强大,且使用非常便捷、快速。比如在Android平台,Xposed模块也一样可以做到插桩,但调试起来麻烦得多,每次都要生成APK、安装APK、添加模块、重启环境。而Frida甚至不需要编译!官网对它的描述是 Scriptable,编辑后运行,直接就能够看到结果——你甚至不用重开目标进程!
如何使用Frida?Frida包括一个需要在目标机器上运行的Frida Server,同时,在本机上(用于写脚本的机器)提供了命令行工具(Frida CLI tool)、也可以用Python调用Frida API或直接编写JS脚本。
本笔记收集了一些安卓使用Frida的资源。
推荐食用方法是:
安装:如果你是PoRE学生,可以直接用助教给的方法,在虚拟机进行安装配置 ...
【pwnable.tw】Re-alloc writeup
相关:realloc、tcache2.29
借用了很多巧合,实在是特别“幸运”的一个利用。自己做出来之后,发现网上大部分wp都和我的解法不一样,但是更通用一些,不像我的那么极限(草)。
漏洞分析保护情况:
123456Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x3fe000)FORTIFY: Enabled
程序是一个菜单,提供了alloc、realloc、free功能,来操作bss段的两个栏位,大致功能如下:
alloc:选中栏当前为NULL时,使用 realloc(NULL, size) 分配新的区块并读入数据;
realloc:选中栏当前非NULL时,将选中栏使用 realloc(ptr, size) 来调整大小并(如果realloc返回值非0)读入数据;
free:将选中栏使用 realloc(ptr, 0) 进行释放,并将指针置零。
主要的漏洞在于realloc的使用上,可以通过RTFM(在线m ...