如何使用OverRide学习源码漏洞利用和逆向工程分析

发布者:蔡瑞奎发布时间:2021-05-25浏览次数:269

关于OverRide

OverRide是一款功能强大的代码研究工具,OverRide以类似“游戏”的形式提供了十个小挑战,广大研究人员可以使用OverRide来学习和了解关于反汇编、代码漏洞利用和逆向工程分析相关的知识。

在该项目的每一个等级文件夹中,你将会看到:

flag:针对下一关卡的密码;

md:告诉你如何找到过关密码;

c:逆向工程代码;

md:ASM相关内容;

最终分数:125/100

工具下载

广大研究人员可以从下列地址下载OverRide:

https://projects.intra.42.fr/uploads/document/document/2096/OverRide.iso

虚拟机配置

在macOS上,首先需要安装VirtualBox。然后在VirtualBox中,创建一台新的虚拟机。

虚拟机配置清单如下:

内存大小:4MB

磁盘文件类型:VDI

物理磁盘存储:动态分配

文件大小:12GB

接下来,点击设置->网络->适配器1->绑定至:桥接适配器。

还是在设置界面,加载我们之前下载好的ISO磁盘镜像。

然后启动虚拟机,运行之后将会显示虚拟机的IP地址并提示用户进行登录。

SSH连接

在一个单独的Shell中登录,用户名为level00,密码也是level00:

ssh level00@{VM_IP} -p 4242

Level过关

作为level00用户身份,其目标就是读取用户level01的登录密码,密码可以在/home/users/level01/.pass处找到。但是,用户level00并没有权限去读取这个文件。

在用户level00的主目录下,有一份level00源码,我们可以通过这个文件来处理用户level01的权限:

我们必须使用gdb找出level00源码中的安全漏洞,然后利用这个漏洞来运行“system(/bin/sh)”,并以用户level01的身份打开一个Shell,最终拿到读取密码的权限:

cat /home/users/level01/.pass

接下来,以用户level01登录:

su level01

以此类推,不断继续过关。

关卡概述

0 - 硬编码密码


1 - Ret2Libc攻击


2 - printf()格式字符串攻击


3 - 暴力破解密码


4 - gets()栈溢出 + libc攻击


5 - Shellcode + printf()格式字符串攻击


6 - 使用gdb发现哈希值


7 - 针对未受保护的数据表执行Ret2Libc攻击


8 - 通过符号链接备份源码密码


9 - Off-by-one错误

项目地址

OverRide:https://github.com/anyaschukin/OverRide

参考资料

https://github.com/anyashuka/Override/blob/main/subject.pdf

https://github.com/anyaschukin/RainFall

https://projects.intra.42.fr/uploads/document/document/2096/OverRide.iso

https://www.virtualbox.org/