前几天刚刚接触MBE(伦斯勒理工学院开设的漏洞利用课程)主要是单纯跟着课件一步一步走,这两天放假,就把它提供的实验平台(warzone)来搭建一下。

实验平台搭建

具体方法在它的github上还是比较详细的,在此主要记录一下我搭建时候的主要步骤:

  1. 下载github提供的vm虚拟机
  2. 将其中的镜像文件提取出来
  3. 打开VMware -> 文件 -> 新建虚拟机 -> 选择“ 自定义(高级)”
  4. 一路点击“下一步”,在出现"安装客户机操作系统"窗口时,选择“稍后安装操作系统”,点击“下一步”
  5. 选择客户机操作系统“Linux”,版本“Ubuntu”
  6. 一路点击“下一步”,在出现"选择磁盘"窗口时,选择“使用现有虚拟磁盘”,点击“下一步”
  7. 选中刚刚提取出的.vmdk镜像文件,点击“下一步”,选择“保持现有格式”,点击“完成”

如何使用

说白了其实就是首先搭建一个网游服务器,然后我们以玩家的身份用xshell(一个ssh连接的软件)连接这个服务器,通过学到的知识Pwn掉系统,拿到下一关的密码。

这里提示一下: 每一关有三个级别,由简到难分别为C、B、A,每一关都需要先用ssh以用户:labXC(密码:lab0Xstart)的身份连接服务器,通过逆向分析或者pwn掉系统进行提权,一旦成功提权(whoami进行确认),我们则可以通过查看该用户文件夹下的.pass文件,来获取该用户的访问密码,然后就可以用ssh通过新的用户名密码进入下一关。

用户名和密码中的“X”表示想要进入的是哪一关,比如进入第一关则是:ssh lab1C@[SERVER_IP],密码: lab01start

具体说明

这里以第一关进行具体说明,并顺带讲解一下二进制静态逆向分析工具Radare2的使用方法。

  1. 首先在VMware中打开刚刚搭建好的虚拟机,用户名密码为:gameadmin:gameadmin
  2. 查看一下服务器的IP地址
  3. 在宿主机打开xshell软件,以gameadmin的身份连接该服务器(gameadmin:gameadmin)
  4. ssh以lab1C的身份连接该服务器,进入第一关的C级

实验分流平台技术架构设计_radare2


3. 进入第一关所在的文件夹,查看一下lab1C的基本信息

实验分流平台技术架构设计_radare2_02


4. 使用radare2打开lab1C(r2是radre2的简写形式),进入后会自动跳转到程序入口0x080485b0

实验分流平台技术架构设计_radare2_03


5. 首先要做的就是让r2对lab1C全部分析一遍(aaa)并列出全部函数(afl)

实验分流平台技术架构设计_MBE_04

aaa:进行细致分析,分析完成之后,r2会将所有有用的信息和特定的名字绑定在一起,比如区段、函数、符号、字符串,这些都被称作 ‘flags’,一个 flag 是所有类似特征的集合。

afl[*] [fcn name]:list functions (addr, size, bbs, name)

在r2中查看这些指令的帮助只要在后面输入?即可, 比如a?查看代码分析类的命令, pd?查看打印反汇编类的命令.

  1. main函数(sym.main)应该是一个不错的开始分析的函数入口点(猜测),反汇编一下这个函数看看(pdf)

实验分流平台技术架构设计_pwn_05

pdf表示p(打印)d(反汇编)f(函数), @表示取地址, sym.main为函数符号, 也可以用十六进制整数地址表示.

分析:

地址0x080486e6之前的都是一些输出,不需要做太多的关注,从0x080486e6开始到0x080486ee是开辟的容纳用户输入的空间,然后调用scanf函数,将用户的输入放入eax与0x149a进行比较,如果不相等则跳转到地址0x08048724,输出字符串“Invalid Password”,否则不进行跳转,程序会输出“Authenticated”并进行相应的提权操作,拿到shell。

所以,我们只要在程序中输入0x149a的十进制,就可以过关啦,亲自实验一下。

实验分流平台技术架构设计_radare2_06

"!!"可以在r2里边执行shell命令

rax2可以进行进制间的转换,具体用法可见帮助文档“rax2 --help”