溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux的xxd命令怎么使用

發(fā)布時(shí)間:2022-02-16 10:36:47 來(lái)源:億速云 閱讀:3296 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Linux的xxd命令怎么使用”,在日常操作中,相信很多人在Linux的xxd命令怎么使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux的xxd命令怎么使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

xxd命令跟hexdump比較相似,都是用來(lái)查看二進(jìn)制文件的內(nèi)容,不過(guò)用起來(lái),xxd命令似乎更順手一點(diǎn)。

Linux的xxd命令怎么使用

xxd 介紹

我們知道如果想要將某個(gè)文件轉(zhuǎn)換成另一種格式,我們可以通過(guò)使用一些在線的轉(zhuǎn)換工具,它可以幫助我們將一個(gè)文件轉(zhuǎn)換成幾乎任何我們所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要將任意文件轉(zhuǎn)換為十六進(jìn)制或二進(jìn)制形式,那又該怎么辦呢? 其實(shí)這很簡(jiǎn)單,在Linux上我們可以通過(guò)xxd這個(gè)命令來(lái)做到這一點(diǎn)。xxd命令可以為給定的標(biāo)準(zhǔn)輸入或者文件做一次十六進(jìn)制的輸出,它也可以將十六進(jìn)制輸出轉(zhuǎn)換為原來(lái)的二進(jìn)制格式。這也有助于對(duì)任意文件的編碼和解碼。 首先,讓我們使用help/man命令,查看xxd命令的具體使用方法。

xxd -h

使用 xxd 執(zhí)行的主要操作 將文件內(nèi)容轉(zhuǎn)換為十六進(jìn)制:例如,我創(chuàng)建了一個(gè)名為“secret.txt”的新文件,現(xiàn)在我想將其內(nèi)容都轉(zhuǎn)換為十六進(jìn)制形式,我可以通過(guò)鍵入以下命令執(zhí)行:

Syntax: xxd filename
xxd secret.txt

如下圖所示,很明顯xxd已經(jīng)為文件“secret.txt”生成了十六進(jìn)制轉(zhuǎn)儲(chǔ)。 在這里我們可以觀察到,以下十六進(jìn)制轉(zhuǎn)儲(chǔ)獲得了它的默認(rèn)格式,例如: 索引行數(shù) 每組的默認(rèn)八位字節(jié)數(shù)為2,其分組大小為4字節(jié) 標(biāo)準(zhǔn)列長(zhǎng)度為16位,帶有空格 Linux的xxd命令怎么使用

使用xxd跳過(guò)第n行:在轉(zhuǎn)換文件時(shí),有許多數(shù)據(jù)可能是我們不需要的。因此,我們可以跳過(guò)這些內(nèi)容。我們可以使用xxd跳過(guò)第n行,并在跳過(guò)的行后生成十六進(jìn)制值。 假設(shè)在我當(dāng)前的情況下,我想要從第5行生成十六進(jìn)制轉(zhuǎn)儲(chǔ),那么可以通過(guò)使用“-s”參數(shù)后跟xxd命令來(lái)實(shí)現(xiàn)。

xxd -s 0x50 secret.txt

將輸出限制為特定長(zhǎng)度:以上我已經(jīng)解釋了如何通過(guò)跳過(guò)行數(shù)來(lái)檢索數(shù)據(jù)。但是,如果你想要限制標(biāo)準(zhǔn)輸出的長(zhǎng)度,那么你可以使用“-l”參數(shù)。 這里,我限制了我的內(nèi)容長(zhǎng)度,以將數(shù)據(jù)打印到有限的范圍,即第5行,如下圖所示。

xxd -l 0x50 secret.txt

因此,我們可以觀察到兩個(gè)命令之間的差異;第一個(gè)命令生成從第6行初始化的十六進(jìn)制值,第二個(gè)命令根據(jù)十六進(jìn)制索引以第5行結(jié)束,請(qǐng)參考以上截圖。

  Linux的xxd命令怎么使用 

將文件內(nèi)容轉(zhuǎn)換為二進(jìn)制文件:如果你想將文件轉(zhuǎn)換為二進(jìn)制形式,則可以使用“-b”選項(xiàng)。命令如下:

xxd -b secret.txt

Linux的xxd命令怎么使用 

設(shè)置列長(zhǎng):上面我已經(jīng)介紹了如何跳過(guò)并限制輸出到范圍,其實(shí)我們還可以設(shè)置列的長(zhǎng)度。默認(rèn)情況下,對(duì)于任何轉(zhuǎn)儲(chǔ)文件它都是12, 16。 默認(rèn)值:我們知道默認(rèn)列長(zhǎng)度為16。這將打印16個(gè)字符,包括空格。

xxd -l 0x20 secret.txt

將列長(zhǎng)度設(shè)置為32:我使用“-l”選項(xiàng)設(shè)置了結(jié)束索引以限制打印數(shù)據(jù)的范圍。然后我使用“-c”參數(shù),將列的長(zhǎng)度設(shè)為了32。

xxd -l 0x40 -c 32 secret.txt

從下圖中,我們可以知道xxd是如何限制列長(zhǎng)度的。 將列長(zhǎng)度設(shè)置為9:現(xiàn)在我們將列長(zhǎng)度設(shè)置為“9”。

xxd -l 0x40 -c 9 secret.txt

在所有這些情況下,xxd都是通過(guò)空格計(jì)數(shù)每個(gè)字符來(lái)為文件創(chuàng)建十六進(jìn)制轉(zhuǎn)儲(chǔ)的。 純16進(jìn)制轉(zhuǎn)儲(chǔ):我們可以使用“-ps”選項(xiàng),以 postscript的連續(xù)16進(jìn)制轉(zhuǎn)儲(chǔ)輸出。這里我們將其輸出保存在hex文件中,以獲取secret.txt文件的純16進(jìn)制轉(zhuǎn)儲(chǔ)。為了驗(yàn)證結(jié)果,我們使用cat命令從hex文件中讀取輸出。 xxd -ps secret.txt > hex cat hex 從下圖中,我們可以知道xxd是如何為“secret.txt”文件,創(chuàng)建純十六進(jìn)制轉(zhuǎn)儲(chǔ)的。 還原文件:我們可以使用“-r”選項(xiàng),來(lái)還原轉(zhuǎn)換的文件內(nèi)容。在我們的例子中,我使用了“-r -p”將純十六進(jìn)制轉(zhuǎn)儲(chǔ)的反向輸出打印為了ASCII格式。

xxd -r -p hex

Linux的xxd命令怎么使用 

分組大小字節(jié):如果我們需要將輸出分組為多個(gè)八位字節(jié),那么我們可以使用“-g”選項(xiàng)來(lái)實(shí)現(xiàn)。默認(rèn)情況下為2。因此,如果我們將值設(shè)為4,那么它將被分組為8位。 在下圖中我們將值設(shè)為8,它將分組為16位作為輸出以簡(jiǎn)化結(jié)果。

xxd -l 0x30 -g 8 secret.txt

SUID Lab 設(shè)置

SUID特殊權(quán)限是以命令的所有者權(quán)限來(lái)運(yùn)行這一命令的,而不是以執(zhí)行者的權(quán)限來(lái)運(yùn)行該命令。現(xiàn)在,讓我們?cè)趚xd上啟用SUID權(quán)限,這樣本地用戶就有機(jī)會(huì)利用xxd來(lái)獲取root權(quán)限。 鍵入以下命令,啟用SUID位:

which xxd chmod u+s /usr/bin/xxd ls -al /usr/bin/xxd

SUID 利用

現(xiàn)在,我們將通過(guò)特殊權(quán)限位SUID來(lái)利用xxd服務(wù)。為此,我創(chuàng)建了一個(gè)受害者機(jī)器的會(huì)話,這將允許我們利用目標(biāo)系統(tǒng)的本地用戶訪問(wèn)。 讓我們使用ssh連接到目標(biāo)機(jī)器,命令如下:

ssh test@192.168.1.103

成功訪問(wèn)受害者機(jī)器后,我們使用find命令來(lái)查找具有SUID權(quán)限的二進(jìn)制文件。

find / -perm -u=s -type f 2>/dev/null

這里我們可以看到有許多二進(jìn)制文件具有SUID位,但我們重點(diǎn)關(guān)注/usr/bin/xxd。 Linux的xxd命令怎么使用 

在xxd上獲得特殊權(quán)限位SUID,我們將獲取用于提取密碼哈希文件的shadow文件。 如下圖所示,我已請(qǐng)求通過(guò)使用xxd暴露/etc/shadow文件,它將為該文件生成十六進(jìn)制轉(zhuǎn)儲(chǔ),并通過(guò)管道傳輸xxd命令來(lái)恢復(fù)其輸出。

xxd "/etc/shadow" / xxd -r

Linux的xxd命令怎么使用 

現(xiàn)在,我將使用john the ripper這款工具來(lái)破解哈希密碼。這樣我們就可以獲取用戶憑據(jù),如下圖所示。

john hash

Linux的xxd命令怎么使用 

獲取憑據(jù)后,我們就可以切換用戶了。首先,我們來(lái)檢查下用戶的sudo權(quán)限:raj,發(fā)現(xiàn)用戶“raj”具有所有權(quán)限。

su raj sudo -l sudo su

因此,讓我們直接切換到root用戶帳戶,并訪問(wèn)root shell。至此,我們已成功利用xxd命令提升了我們的用戶權(quán)限。

到此,關(guān)于“Linux的xxd命令怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI