計算機系統導論——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個元素的數組的形式輸出給定地址存放的值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM