您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux的xxd命令怎么使用”,在日常操作中,相信很多人在Linux的xxd命令怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux的xxd命令怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
xxd命令跟hexdump比較相似,都是用來查看二進制文件的內容,不過用起來,xxd命令似乎更順手一點。
我們知道如果想要將某個文件轉換成另一種格式,我們可以通過使用一些在線的轉換工具,它可以幫助我們將一個文件轉換成幾乎任何我們所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要將任意文件轉換為十六進制或二進制形式,那又該怎么辦呢? 其實這很簡單,在Linux上我們可以通過xxd這個命令來做到這一點。xxd命令可以為給定的標準輸入或者文件做一次十六進制的輸出,它也可以將十六進制輸出轉換為原來的二進制格式。這也有助于對任意文件的編碼和解碼。 首先,讓我們使用help/man
命令,查看xxd
命令的具體使用方法。
xxd -h
使用 xxd 執行的主要操作 將文件內容轉換為十六進制:例如,我創建了一個名為“secret.txt”的新文件,現在我想將其內容都轉換為十六進制形式,我可以通過鍵入以下命令執行:
Syntax: xxd filename xxd secret.txt
如下圖所示,很明顯xxd已經為文件“secret.txt”生成了十六進制轉儲。 在這里我們可以觀察到,以下十六進制轉儲獲得了它的默認格式,例如: 索引行數 每組的默認八位字節數為2,其分組大小為4字節 標準列長度為16位,帶有空格
使用xxd跳過第n行:在轉換文件時,有許多數據可能是我們不需要的。因此,我們可以跳過這些內容。我們可以使用xxd跳過第n行,并在跳過的行后生成十六進制值。 假設在我當前的情況下,我想要從第5行生成十六進制轉儲,那么可以通過使用“-s”參數后跟xxd命令來實現。
xxd -s 0x50 secret.txt
將輸出限制為特定長度:以上我已經解釋了如何通過跳過行數來檢索數據。但是,如果你想要限制標準輸出的長度,那么你可以使用“-l”參數。 這里,我限制了我的內容長度,以將數據打印到有限的范圍,即第5行,如下圖所示。
xxd -l 0x50 secret.txt
因此,我們可以觀察到兩個命令之間的差異;第一個命令生成從第6行初始化的十六進制值,第二個命令根據十六進制索引以第5行結束,請參考以上截圖。
將文件內容轉換為二進制文件:如果你想將文件轉換為二進制形式,則可以使用“-b”選項。命令如下:
xxd -b secret.txt
設置列長:上面我已經介紹了如何跳過并限制輸出到范圍,其實我們還可以設置列的長度。默認情況下,對于任何轉儲文件它都是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都是通過空格計數每個字符來為文件創建十六進制轉儲的。 純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
分組大小字節:如果我們需要將輸出分組為多個八位字節,那么我們可以使用“-g”選項來實現。默認情況下為2。因此,如果我們將值設為4,那么它將被分組為8位。 在下圖中我們將值設為8,它將分組為16位作為輸出以簡化結果。
xxd -l 0x30 -g 8 secret.txt
SUID特殊權限是以命令的所有者權限來運行這一命令的,而不是以執行者的權限來運行該命令。現在,讓我們在xxd上啟用SUID權限,這樣本地用戶就有機會利用xxd來獲取root權限。 鍵入以下命令,啟用SUID位:
which xxd chmod u+s /usr/bin/xxd ls -al /usr/bin/xxd
現在,我們將通過特殊權限位SUID來利用xxd服務。為此,我創建了一個受害者機器的會話,這將允許我們利用目標系統的本地用戶訪問。 讓我們使用ssh連接到目標機器,命令如下:
ssh test@192.168.1.103
成功訪問受害者機器后,我們使用find命令來查找具有SUID權限的二進制文件。
find / -perm -u=s -type f 2>/dev/null
這里我們可以看到有許多二進制文件具有SUID位,但我們重點關注/usr/bin/xxd。
在xxd上獲得特殊權限位SUID,我們將獲取用于提取密碼哈希文件的shadow文件。 如下圖所示,我已請求通過使用xxd暴露/etc/shadow文件,它將為該文件生成十六進制轉儲,并通過管道傳輸xxd命令來恢復其輸出。
xxd "/etc/shadow" / xxd -r
現在,我將使用john the ripper這款工具來破解哈希密碼。這樣我們就可以獲取用戶憑據,如下圖所示。
john hash
獲取憑據后,我們就可以切換用戶了。首先,我們來檢查下用戶的sudo權限:raj,發現用戶“raj”具有所有權限。
su raj sudo -l sudo su
因此,讓我們直接切換到root用戶帳戶,并訪問root shell。至此,我們已成功利用xxd命令提升了我們的用戶權限。
到此,關于“Linux的xxd命令怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。