通过10个小挑战探索反汇编、二进制漏洞利用和逆向工程。
在每个级别的文件夹中,您将找到:
flag - 下一关的密码
README.md - 如何找到密码
source.c - 逆向工程后的二进制文件
dissasembly_notes.md - 汇编笔记
更多详情请参见题目。
想体验更多gdb和漏洞利用的乐趣,请查看之前的项目RainFall。
首先从42下载OverRide.iso。
在Mac OSX上,安装VirtualBox。
在VirtualBox中创建新虚拟机(点击新建)。
继续接受所有默认设置:
接下来点击设置 > 网络 > 适配器1 > 连接方式:桥接网卡。
仍在设置中,点击存储 > "控制器: IDE"右侧,有一个带加号的CD图标(添加光驱)。 点击添加光盘映像,然后选择OverRide.iso。
点击启动来启动虚拟机,运行后应显示虚拟机IP地址并提示用户登录。
从另一个shell以用户level00身份登录,密码为level00。
ssh level00@{VM_IP} -p 4242
作为用户level00,目标是读取用户level01的密码,该密码位于*/home/users/level01/.pass*。但是,用户level00没有权限读取此文件。
在用户level00的主文件夹中,有一个设置了SUID且所有者为level01的二进制文件level00。
这意味着当我们执行二进制文件level00时,我们拥有用户level01的权限。
我们必须使用gdb在二进制文件level00中找到漏洞。然后利用该漏洞运行system("/bin/sh"),以用户level01的身份打开一个shell,从而拥有读取密码的权限。
cat /home/users/level01/.pass
然后以用户level01身份登录。
su level01
每关重复此过程。
对于每个级别,我们通过检查二进制文件的gdb反汇编,逆向工程出原始的source.c。
我与才华横溢的@dfinnis组队完成了这个项目。