【Music#0x00】纯个人向音乐鉴赏与推荐
本人对音乐、乐理、电音制作等知识皆一窍不通,就是个臭打鼓的。因此本条博客是一个纯个人向音乐鉴赏与推荐!
电子音乐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 UP ...
【Pwn#0x14】HITCTF2023 xv6-Trusted writeup
哈哈,第一次打内核题,虽然是xv6但还是感觉非常酷。比赛结束前才想到了真的可行的思路,赛后结合官方 writeup 调出来了。(本篇博客没有写调试的技巧,就只写了题目相关的一些思路。)
程序分析本程序由教学操作系统 xv6 改编而来,是一道 RISC-V 内核漏洞利用题。在 xv6 中,没有地址随机化机制。但有着页表权限保护,也就是 R/W/X 权限位;并且在 xv6 通过 ecall 进入 supervisor mode 时,会将页表切换到内核页表,从而屏蔽对于用户内存地址的访问。
题目的目标是读出位于内核的数据段中的 flag,出题人贴心地给出了一个 backdoor 函数来帮我们读出 flag:
12345678910111213141516171819202122232425.text:000000008000620C # public backdoor.text:000000008000620C backdoor:.text:000000008000620C.text:000000008000620C var_s0 ...
【Linux#0x00】Linux权限模型
Linux系列开篇!本期介绍Linux中的权限模型,从 ls -l 的解释一路科普到内核漏洞的利用(什么!)
由于 Linux 设计时是一个多用户系统,可能有很多人共用一个 Linux 系统,因此 Linux 中存在用户和用户组的概念,每个用户或者用户组都有一个自己的 id,每个用户可以属于多个用户组。有了用户之间的区分,就可以为文件设置权限,限制不应该访问的用户的访问,于是就有了权限系统。
用户和用户组这两个抽象的概念,其实主要体现在两个地方:
进程系统:每个进程都有自己所属的用户和用户组
文件系统:每个文件都有自己所属的用户和用户组,以及相应的读写权限设置
可以使用 getuid() 系列系统调用获取当前进程的用户 id,在 shell 里可以直接输入 id 查看当前 shell 进程的用户和用户组 id。(这里先不提及 id 的区别,后面再进行讲解)
文件系统中的权限模型使用命令 ls -l 可以查看文件的详细信息,比如:
12345$ lldrwxr-xr-x 4 cameudis cameudis 4096 Mar 24 2023 .cargo/drwx---- ...
【Pwn#0x14】pwnable.tw BabyStack writeup
本地打通了,远程……台湾太远了……爆破到一半就会不知道谁把我连接掐掉……
漏洞分析本题主要有两个漏洞,一个是检查密码时,根据用户的输入的大小(strlen)作为 strncmp 的参数进行比较,然而这样会导致用户输入 NULL Byte 就通过检查,同时还允许了一字节一字节爆破得到正确的密码;甚至泄露密码后面的别的数据——在本题中就是程序基址。另一个是一个没有检查大小的 strcpy。
漏洞利用本题的流程就是先利用第一个漏洞来爆破得到栈上的密码以及 saved rbp,然后利用 strcpy 进行控制流劫持。由于 strcpy 限制 null byte 截断,所以我利用程序自己的 read wrapper 函数(CA0 处)来进行第二次写入,这次就可以写入 ROP chain。(这里调试得知 rdi 正好是栈上变量)第一次写入 ROP chain,我泄露了 libc 的基址,让程序从 start 重头来过;第二次写入 ROP chain,我就直接执行 system("/bin/sh") 来拿到 shell。
1234567891011121314151617181 ...
【Pwn#0x13】pwnable.tw Starbound writeup
本题 neta 了星界边境,实现了一个简单的二维探索游戏。
1234567[*] '/mnt/c/Projects/ctf_archive/[pwnable.tw]Starbound/pwn' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8047000) FORTIFY: Enabled
漏洞分析数组下标未检查导致的任意控制流劫持。
1234567891011121314151617181920int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // eax char nptr[256]; // [esp+10h] [ebp-104h] BYREF init(); while ( 1 ) { alarm(0x3C ...
【Blog#0x02】个人博客搭建:基于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
其 ...
【Tool#0x02】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
在 ...
【Tool#0x01】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同学编写的教程
【Network#0x01】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 ...
【Pwn#0x12】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 ...