溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中怎么利用xxd命令進行提權

發布時間:2021-07-24 13:58:04 來源:億速云 閱讀:346 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關Linux中怎么利用xxd命令進行提權,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

xxd 介紹

我們知道如果想要將某個文件轉換成另一種格式,我們可以通過使用一些在線的轉換工具,它可以幫助我們將一個文件轉換成幾乎任何我們所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要將任意文件轉換為十六進制或二進制形式,那又該怎么辦呢?

其實這很簡單,在Linux上我們可以通過xxd這個命令來做到這一點。xxd命令可以為給定的標準輸入或者文件做一次十六進制的輸出,它也可以將十六進制輸出轉換為原來的二進制格式。這也有助于對任意文件的編碼和解碼。

首先,讓我們使用help/man命令,查看xxd命令的具體使用方法。

xxd -h

Linux中怎么利用xxd命令進行提權

使用 xxd 執行的主要操作

將文件內容轉換為十六進制:例如,我創建了一個名為“secret.txt”的新文件,現在我想將其內容都轉換為十六進制形式,我可以通過鍵入以下命令執行:

Syntax: xxd <options> filename

xxd secret.txt

如下圖所示,很明顯xxd已經為文件“secret.txt”生成了十六進制轉儲。

在這里我們可以觀察到,以下十六進制轉儲獲得了它的默認格式,例如:

索引行數(例如:00000000, 00000010, 00000020…………00000220)

每組的默認八位字節數為2(-e: 4 little-endian hexdump),其分組大小為4字節(例如:4967 6e69…………6e67)

標準列長度為16位,帶有空格

Linux中怎么利用xxd命令進行提權

使用xxd跳過第n行:在轉換文件時,有許多數據可能是我們不需要的。因此,我們可以跳過這些內容(跳過行數)。我們可以使用xxd跳過第n行,并在跳過的行后生成十六進制值。

假設在我當前的情況下,我想要從第5行生成十六進制轉儲,那么可以通過使用“-s”參數后跟xxd命令來實現。

xxd -s 0x50 secret.txt

將輸出限制為特定長度:以上我已經解釋了如何通過跳過行數(即從特定行輸出)來檢索數據。但是,如果你想要限制標準輸出的長度,那么你可以使用“-l”參數。

這里,我限制了我的內容長度,以將數據打印到有限的范圍,即第5行,如下圖所示。

xxd -l 0x50 secret.txt

因此,我們可以觀察到兩個命令之間的差異;第一個命令生成從第6行初始化的十六進制值,第二個命令根據十六進制索引以第5行結束,請參考以上截圖。

Linux中怎么利用xxd命令進行提權

將文件內容轉換為二進制文件:如果你想將文件轉換為二進制形式,則可以使用“-b”選項。命令如下:

xxd -b secret.txt

Linux中怎么利用xxd命令進行提權

設置列長:上面我已經介紹了如何跳過并限制輸出到范圍,其實我們還可以設置列的長度。默認情況下,對于任何轉儲文件它都是12, 16。

默認值:我們知道默認列長度為16。這將打印16個字符,包括空格。

xxd -l 0x20 secret.txt

將列長度設置為32:我使用“-l”選項設置了結束索引以限制打印數據的范圍。然后我使用“-c”參數,將列的長度設為了32。

xxd -l 0x40 -c 32 secret.txt

從下圖中,我們可以知道xxd是如何限制列長度的。

將列長度設置為9:現在我們將列長度設置為“9”。

xxd -l 0x40 -c 9 secret.txt

在所有這些情況下,xxd都是通過空格計數每個字符來為文件創建十六進制轉儲的。

Linux中怎么利用xxd命令進行提權

純16進制轉儲:我們可以使用“-ps”選項,以 postscript的連續16進制轉儲輸出。這里我們將其輸出保存在hex文件中,以獲取secret.txt文件的純16進制轉儲。為了驗證結果,我們使用cat命令從hex文件中讀取輸出。

xxd -ps secret.txt > hex
cat hex

從下圖中,我們可以知道xxd是如何為“secret.txt”文件,創建純十六進制轉儲的。

還原文件:我們可以使用“-r”選項,來還原轉換的文件內容。在我們的例子中,我使用了“-r -p”將純十六進制轉儲的反向輸出打印為了ASCII格式。

xxd -r -p hex

Linux中怎么利用xxd命令進行提權

分組大小字節:如果我們需要將輸出分組為多個八位字節,那么我們可以使用“-g”選項來實現。默認情況下為2(-e: 4 little-endian hex dump)。因此,如果我們將值設為4,那么它將被分組為8位。

在下圖中我們將值設為8,它將分組為16位作為輸出以簡化結果。

xxd -l 0x30 -g 8 secret.txt

Linux中怎么利用xxd命令進行提權

SUID Lab 設置

SUID特殊權限是以命令(可執行文件)的所有者權限來運行這一命令的,而不是以執行者的權限來運行該命令?,F在,讓我們在xxd上啟用SUID權限,這樣本地用戶就有機會利用xxd來獲取root權限。

鍵入以下命令,啟用SUID位:

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

SUID 利用

現在,我們將通過特殊權限位SUID來利用xxd服務。為此,我創建了一個受害者機器的會話,這將允許我們利用目標系統的本地用戶訪問。

讓我們使用ssh連接到目標機器,命令如下:

ssh test@192.168.1.103

成功訪問受害者機器后,我們使用find命令來查找具有SUID權限的二進制文件。

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

這里我們可以看到有許多二進制文件具有SUID位,但我們重點關注/usr/bin/xxd。

Linux中怎么利用xxd命令進行提權

在xxd上獲得特殊權限位SUID,我們將獲取用于提取密碼哈希文件的shadow文件。

如下圖所示,我已請求通過使用xxd暴露/etc/shadow文件,它將為該文件生成十六進制轉儲,并通過管道傳輸xxd命令來恢復其輸出。 

xxd "/etc/shadow" | xxd -r

Linux中怎么利用xxd命令進行提權

現在,我將使用john the ripper這款工具來破解哈希密碼。這樣我們就可以獲取用戶憑據,如下圖所示。

john hash

Linux中怎么利用xxd命令進行提權

獲取憑據后,我們就可以切換用戶了。首先,我們來檢查下用戶的sudo權限:raj,發現用戶“raj”具有所有權限。

su raj
sudo -l
sudo su

因此,讓我們直接切換到root用戶帳戶,并訪問root shell(如下圖所示)。至此,我們已成功利用xxd命令提升了我們的用戶權限。

Linux中怎么利用xxd命令進行提權

以上就是Linux中怎么利用xxd命令進行提權,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女