计算机系统导论——LAB(2)——bomblab

写在前面:

本文章没有拆弹教程,只有拆弹准备工作教程!

Welcome to my fiendish little bomb. You have 6 phases with which to blow yourself up. Have a nice day!

 

一、下载文件

登陆http://autolab.pku.edu.cn,下载writeup和你的专属bomb

下载bomb:从Download handout和Download your bomb中选择一个下载即可;如果重复下载,可以发现每次下载的文件bombX.tar后缀数字串X都不一样,因为每个bomb都不一样,只要选择一个bomb并一直work on it就好了,请删除其余的所有bomb.

tips: 1.请先仔细阅读writeup

      2.不要轻易尝试运行bomb,错了会扣分啊喂

二、登陆服务器

(一)首次登陆

终端输入:ssh s1800017827@162.105.31.232 -p 19373,回车

s1800017827是我的用户名(username),19373是我的端口号(port),请按照助教所发表格填写自己的对应信息;162.105.31.232可能每届不一样(?)

收到“Are you sure you want to continue connecting (yes/no)?”

输入了yes并回车,于是继续了

输入初始密码,默认初始密码为学号(看不到输入,直接敲一连串进去然后回车) 

第一次登陆服务器会要求修改密码,输入一次初始密码,输入两次新密码(同样看不到输入,直接敲一连串进去然后回车),便可修改完成。

完成后自动退出服务器登录。

 

(二)再次登陆

终端输入:ssh s1800017827@162.105.31.232 -p 19373,回车;输入修改后的密码,即可。

登陆成功后,主机名(绿色的那串,比如我的就是“mariana-tan@ubuntu”)会更改成服务器上的主机名

但是这时我们的服务器上是空的,如果输入ls并回车(查看当前文件夹下的所有文件),什么输出都没有。于是我们需要退出服务器登陆,并从本地的终端上传文件到服务器。

 

(三)退出登陆

终端输入exit或logout可以直接退出服务器,回到本地的终端。

 

 

三、上传bomb到服务器

输入ls查看当前目录下的所有文件,什么输出都没有,说明当前目录为空

退出服务器,回到本地的终端

进入存放bombX.tar(X为一个整数,每个人的数字都是不一样的)压缩文件的文件夹(如果不知道路径,可以去files里康康,files就是左侧边栏这个文件夹一样的图标)

我的存放路径是Desktop/bomb621.tar,用命令cd进入Desktop;为了便于展示,我用ls命令输出了Desktop/路径下的所有文件/文件夹,可以看到Desktop/中存放有文件bomb621.tar、bomblab.pdf和文件夹bomb621、LAB.

tips:可以输入文件/文件夹的前几个字符,然后敲tab键自动补全文件/文件夹名

输入:scp -P 19373 bomb621.tar s1800017827@162.105.31.232:~/并回车

(还是一样,端口号19373、文件名bomb621.tar、用户名s1800017827这几个信息要替换成自己的对应信息)

瞬间,就会显示上传完毕。

再次登陆服务器,输入ls,就能看到上传上去的文件了

解压bombX.tar,输入tar xvf bomb621.tar并回车,解压完成,解压后文件存放于相同目录下创建的和压缩包同名的文件夹中,如下:

 

 

四、愉快拆弹

进入解压缩的bombX文件夹,输入./bomb就可以运行bomb了,输入ctrl c可以终止bomb程序

拆弹指导见公众号文章《如何优雅地拆弹》:https://mp.weixin.qq.com/s/glcorCvgv48w-2em3KbCyA

(一)常用Linux指令

copy自公众号文章《你需要了解的服务器一二事》:https://mp.weixin.qq.com/s/0T5Xay_O33n9iX647ba1Iw

pwd:查看当前目录。

ls:列出当前文件夹下的文件。

ll:列出当前文件夹下文件的详细信息。

cd 文件夹路径:进入指定文件夹下。

mkdir 文件夹名:建立文件夹。

cp 源文件名 新文件名:复制文件。

mv 文件名 文件夹名/:移动文件。

rm 文件名:删除文件。

(与文件夹有关操作加上 -r 指令)

./文件名:运行文件。

tar xvf XXXX.tar:解压tar文件。

gcc 源代码 (文件名):gcc编译。

objdump -d 可执行文件名:反汇编可执行文件。

objdump -d 可执行文件名 > 文件名.txt:反汇编可执行文件并保存到txt。

(二)常用GDB指令

见The CS:APP textbook Web page at:http://csapp.cs.cmu.edu/3e/students.html

gdb 可执行文件名:进入gdb开始debug

r:运行可执行文件//r = run

r 指令1 指令2...:以指令1、指令2、...作为输入,运行可执行文件

r 文本文件名.txt:以文本文件名.txt中的文本作为输入,运行可执行文件,读到EOF后,可以在终端继续进行输入

b 函数名:在函数首地址处设置断点//b = breakpoint

b *指令地址:在给定地址处设置断点,地址格式形如0x5555555555e63

clear 函数名:删除函数首地址处的断点

clear *指令地址:删除给定地址处的断点 

delete 函数名:删除函数首地址处的断点

delete *指令地址:删除给定地址处的断点

disable 断点序号:令该断点暂时失效

enable 断点序号:令失效断点恢复

i b:显示当前断点信息//i b = info breakpoint

disas: 反汇编当前函数//disas = disassemble  

si:从断点处逐句执行

k:从断点中退出程序//k = kill

c:从断点处继续执行程序//c = continue

i reg:查看当前断点的所有寄存器值//i reg = info register

x/s 内存地址:以字符串形式输出给定地址存放的值//s = string

x/nwd 内存地址:n应当以数字替换,以有n个元素的数组的形式输出给定地址存放的值

原文地址:https://www.cnblogs.com/tanshiyin-20001111/p/11647151.html