纠结又纠结的实验,希望下次老师能讲清楚每个实验的要求……解决好前面的问题之后,后面几个上手就没有那么困难了。我果然还是学的太不扎实了,也缺少相关经验,磨蹭了好久才弄出来,羞愧。
1.环境配置
首先是配置虚拟机,在官网可以下载vitual box可用的镜像,然后自己安装一下。提前配置好的虚拟机自己不用调节很多。
然后讲一讲这个实验。我们做的版本是Buffer Overflow Attack Lab (Server Version),在Ubuntu20.04版本上的,感觉网上主要的关于seedlab的资料大部分是以前的版本。实际上还是有些差别的。这个lab的目标是利用buffer overflow来获取server的shell权限。
实验环境配置的话,是要下载lab setup的文件,里面包含做实验要用到的一些代码和文件。
#关闭位置随机化
$ sudo /sbin/sysctl -w kernel.randomize_va_space=0
关闭位置随机化这一步是在前几个难度的task里面要用到,降低难度的。看有其他前辈说每次打开终端要记得设置一下,这个设置应该对于多有正在运行的终端都是起作用的,所以如果你把打开的终端关闭了的话,以防万一还是重新设置一下。
然后按着manual的步骤,make不同的server的配置文件。
接下来build dockers,也是按照manual的说明来进行就可以了,需要注意的是要先生成好server的文件再进行dockers的配置。我这里还有一个问题就是,用 docker-compose build 命令的时候就会提示网络问题,但是用dcbuild就没有问题,很奇怪。
2.Task 1: Get Familiar with the Shellcode
task1主要就是让大家熟悉一下shellcode的操作,简单按照给出的步骤make一下shellcode的文件,运行就可以了。然后按照manual的要求的话,是要能够删除一个文件。这个也很好实现,就是在shellcode的py文件里,修改一下那行命令就可以。需要注意的是,要保证位数不变,最后一位还是用*,前面少的用空格补齐。这里面是用*代替了0,所以最后的*是用来代表结束的。
3.Task 2: Level-1 Attack
正式进入攻击阶段啦。首先打开终端1,然后打开我们的containers,这一步很简单哈。一共有四个container,分别是server1234,对应着L1234四个难度,然后这里要用的就是server1。现在终端1应该是保持着container在线的状态。别忘了提前设置关闭地址随机化。
然后打开终端2,在这里我们用命令
$ echo hello | nc 10.9.0.5 9090 #10.9.0.5是server1的ip
# press Ctrl+C
来得到server1的相关信息,在终端1中可以看到。