前言
本文我將為大家介紹一個(gè)面向行的文本編輯器命令“ed”,它主要用于生成,顯示,更改和操作文本文件。所有ed命令都在行或行范圍內(nèi)執(zhí)行操作;例如,“d”命令刪除行;“m”命令移動(dòng)行,“t”命令復(fù)制行等等?,F(xiàn)在,我們要做的就是利用這些“ed”命令,來(lái)提升我們?cè)贚inux系統(tǒng)上的用戶權(quán)限。
ed 概要
Linux中的ed命令用于啟動(dòng)“ed文本編輯器”,這是一個(gè)基于行的文本編輯器。它是Linux中功能最簡(jiǎn)單的文本編輯程序,一次僅能編輯一行而非全屏幕方式的操作。它可以幫助用戶執(zhí)行許多操作,如創(chuàng)建,編輯,顯示和操作文件。
它有兩種不同的工作模式,命令模式(command mode)和輸入模式(input mode)。在命令模式下,“ed”從標(biāo)準(zhǔn)輸入讀取命令并執(zhí)行,以操作編輯器緩沖區(qū)的內(nèi)容,而在輸入,如“m”(移動(dòng)),“d”(刪除),“t” (復(fù)制)或“c”(更改)命令時(shí),ed就會(huì)進(jìn)入其輸入模式。
鍵入help命令以了解有關(guān)“ed”的更多信息。
使用ed初始化文件:在初始階段運(yùn)行命令時(shí)終端空間如下圖所示。默認(rèn)情況下,編輯器創(chuàng)建一個(gè)要寫入的空緩沖區(qū),類似于其他基于命令行的編輯器,在沒有文件名的情況下調(diào)用時(shí)的工作方式。
現(xiàn)在,讓我們來(lái)創(chuàng)建一個(gè)包含文本內(nèi)容的文本文件。首先,我們輸入a進(jìn)入輸入模式,完成編輯后輸入一個(gè)點(diǎn)(.)然后回車回到命令模式。按wq文件名保存新文件,再按q退出編輯器。
ed
a
.
w info.txt
q
cat info.txt
你可以使用“cat”命令確認(rèn)文件是否已被成功創(chuàng)建。
使用ed編輯文件:如果現(xiàn)在你想要再次編輯同一文件,你可以通過(guò)將文件名作為參數(shù)傳遞給ed命令,然后按照以上相同過(guò)程操作即可。
在下圖中,我在我的文件“info.txt”中添加了一行,并通過(guò)相同的方式創(chuàng)建了它。
注:無(wú)論何時(shí)使用ed命令的任何選項(xiàng)你都需要使用 ‘a(chǎn)', ‘.', ‘w', ‘q'命令 。
現(xiàn)在,我們已經(jīng)學(xué)習(xí)了使用ed的基本編輯方法。那么如果我們想要更改特定行,該如何使用ed來(lái)實(shí)現(xiàn)該操作呢?
在下圖中,我為大家展示了如何使用'p'和'n'參數(shù)打印任何的特定行
當(dāng)我們輸入'p'(小寫) 打印當(dāng)前行,如輸入 ‘,p'(不含引號(hào)) 則顯示全文;'n'用于顯示最后一行的行號(hào)和內(nèi)容,輸入數(shù)字來(lái)選擇要編輯行;
因此,我們只需輸入相應(yīng)的行號(hào)即可。
定位到相應(yīng)的行后,你可以通過(guò)輸入“c”命令來(lái)更改行。例如,這里我更改了第5行,這是我文件中的最后一行,我添加了一些額外的內(nèi)容在其中,并使用'cat'命令查看我的內(nèi)容是否已成功被添加,最后按照上述相同的過(guò)程保存文件即可。
通過(guò)使用ed顯示錯(cuò)誤消息:當(dāng)你鍵入ed無(wú)法理解的內(nèi)容時(shí)會(huì)顯示問號(hào) (?)。了解更多有關(guān)錯(cuò)誤編輯的信息,只需鍵入'h'即可。
從以下截圖中可以看到,當(dāng)我輸入了一個(gè)'b'選項(xiàng)時(shí)它返回了(?),這是表示錯(cuò)誤的符號(hào)。而我輸入'h' ed則更進(jìn)一步的向我說(shuō)明了錯(cuò)誤的原因,即選項(xiàng)b為未知命令。
ed復(fù)制和移動(dòng)操作:除了上面討論的功能之外,ed還提供了在其他位置復(fù)制和粘貼行的選項(xiàng),在這種情況下,我們使用't'命令復(fù)制行,'m'命令移動(dòng)行。你需要在t命令前添加你想要復(fù)制和添加行的行號(hào)。例如,如下所示,我已將第5行復(fù)制到位置0并進(jìn)行了保存。
ed info.txt
5t0
cat info.txt
在上述命令中,5表示要復(fù)制的行,0表示粘貼位置的行號(hào)。
ed搜索操作:我們也可以按關(guān)鍵字搜索任意的行。首先,我們?cè)趀d后使用“-p%”選項(xiàng),這將進(jìn)一步的提示你搜索任務(wù)。我們只需在%后跟搜索關(guān)鍵字,按Enter鍵即可。
ed -p% info.txt
%/misconfiguration
%/Linux
在下圖中,ed僅打印了那些包括搜索關(guān)鍵字misconfiguration和Linux的行。
濫用 ed 命令
現(xiàn)在,我們將利用ed命令執(zhí)行提權(quán)操作。為此,我們需要設(shè)置具有管理權(quán)限的ed command lab。然后,我們將查看獲取sudo權(quán)限后對(duì)它的影響,以及我們?nèi)绾胃嗟貙⑵溆糜谔釞?quán)。
如下圖所示,我創(chuàng)建了一個(gè)擁有所有sudo權(quán)限的本地用戶(test)。
要添加sudo權(quán)限請(qǐng)打開/sudoers文件,并輸入以下行作為用戶權(quán)限規(guī)范。
test All=(root) NOPASSWD: /bin/ed
利用 Sudo 權(quán)限
我們需要受害者機(jī)器的會(huì)話,這將有助于我們讓本地用戶訪問目標(biāo)系統(tǒng),并通過(guò)它提升為root用戶權(quán)限。
首先,我們使用ssh連接到目標(biāo)機(jī)器。鍵入以下命令以通過(guò)本地用戶登錄獲取訪問權(quán)限。
然后我們查找具有sudo權(quán)限的“test”用戶,發(fā)現(xiàn)用戶“test”可以在沒有密碼的情況下以“root”權(quán)限執(zhí)行ed命令。
在知道了test用戶擁有sudo權(quán)限的事實(shí)后,我們可以使用ed命令訪問空緩沖區(qū)來(lái)調(diào)用bash /sh shell。如下所示,我們的用戶權(quán)限已被提升為了root。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。