Linux的xxd命令怎么使用
這篇文章主要介紹“Linux的xxd命令怎么使用”,在日常操作中,相信很多人在Linux的xxd命令怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux的xxd命令怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
xxd命令跟hexdump比較相似,都是用來查看二進制文件的內容,不過用起來,xxd命令似乎更順手一點。
xxd 介紹
我們知道如果想要將某個文件轉換成另一種格式,我們可以通過使用一些在線的轉換工具,它可以幫助我們將一個文件轉換成幾乎任何我們所需的文件格式,例如:“pdf to word,jpg to pdf,excel to pdf“等等。但如果有人想要將任意文件轉換為十六進制或二進制形式,那又該怎么辦呢? 其實這很簡單,在Linux上我們可以通過xxd這個命令來做到這一點。xxd命令可以為給定的標準輸入或者文件做一次十六進制的輸出,它也可以將十六進制輸出轉換為原來的二進制格式。這也有助于對任意文件的編碼和解碼。 首先,讓我們使用help/man命令,查看xxd命令的具體使用方法。
xxd-h
使用 xxd 執行的主要操作 將文件內容轉換為十六進制:例如,我創建了一個名為“secret.txt”的新文件,現在我想將其內容都轉換為十六進制形式,我可以通過鍵入以下命令執行:
Syntax:xxdfilename xxdsecret.txt
如下圖所示,很明顯xxd已經為文件“secret.txt”生成了十六進制轉儲。 在這里我們可以觀察到,以下十六進制轉儲獲得了它的默認格式,例如: 索引行數 每組的默認八位字節數為2,其分組大小為4字節 標準列長度為16位,帶有空格
使用xxd跳過第n行:在轉換文件時,有許多數據可能是我們不需要的。因此,我們可以跳過這些內容。我們可以使用xxd跳過第n行,并在跳過的行后生成十六進制值。 假設在我當前的情況下,我想要從第5行生成十六進制轉儲,那么可以通過使用“-s”參數后跟xxd命令來實現。
xxd-s0x50secret.txt
將輸出限制為特定長度:以上我已經解釋了如何通過跳過行數來檢索數據。但是,如果你想要限制標準輸出的長度,那么你可以使用“-l”參數。 這里,我限制了我的內容長度,以將數據打印到有限的范圍,即第5行,如下圖所示。
xxd-l0x50secret.txt
因此,我們可以觀察到兩個命令之間的差異;第一個命令生成從第6行初始化的十六進制值,第二個命令根據十六進制索引以第5行結束,請參考以上截圖。
將文件內容轉換為二進制文件:如果你想將文件轉換為二進制形式,則可以使用“-b”選項。命令如下:
xxd-bsecret.txt
設置列長:上面我已經介紹了如何跳過并限制輸出到范圍,其實我們還可以設置列的長度。默認情況下,對于任何轉儲文件它都是12, 16。 默認值:我們知道默認列長度為16。這將打印16個字符,包括空格。
xxd-l0x20secret.txt
將列長度設置為32:我使用“-l”選項設置了結束索引以限制打印數據的范圍。然后我使用“-c”參數,將列的長度設為了32。
xxd-l0x40-c32secret.txt
從下圖中,我們可以知道xxd是如何限制列長度的。 將列長度設置為9:現在我們將列長度設置為“9”。
xxd-l0x40-c9secret.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-phex
分組大小字節:如果我們需要將輸出分組為多個八位字節,那么我們可以使用“-g”選項來實現。默認情況下為2。因此,如果我們將值設為4,那么它將被分組為8位。 在下圖中我們將值設為8,它將分組為16位作為輸出以簡化結果。
xxd-l0x30-g8secret.txt
SUID Lab 設置
SUID特殊權限是以命令的所有者權限來運行這一命令的,而不是以執行者的權限來運行該命令?,F在,讓我們在xxd上啟用SUID權限,這樣本地用戶就有機會利用xxd來獲取root權限。 鍵入以下命令,啟用SUID位:
whichxxdchmodu+s/usr/bin/xxdls-al/usr/bin/xxd
SUID 利用
現在,我們將通過特殊權限位SUID來利用xxd服務。為此,我創建了一個受害者機器的會話,這將允許我們利用目標系統的本地用戶訪問。 讓我們使用ssh連接到目標機器,命令如下:
sshtest@192.168.1.103
成功訪問受害者機器后,我們使用find命令來查找具有SUID權限的二進制文件。
find/-perm-u=s-typef2>/dev/null
這里我們可以看到有許多二進制文件具有SUID位,但我們重點關注/usr/bin/xxd。
在xxd上獲得特殊權限位SUID,我們將獲取用于提取密碼哈希文件的shadow文件。 如下圖所示,我已請求通過使用xxd暴露/etc/shadow文件,它將為該文件生成十六進制轉儲,并通過管道傳輸xxd命令來恢復其輸出。
xxd"/etc/shadow"/xxd-r
現在,我將使用john the ripper這款工具來破解哈希密碼。這樣我們就可以獲取用戶憑據,如下圖所示。
johnhash
獲取憑據后,我們就可以切換用戶了。首先,我們來檢查下用戶的sudo權限:raj,發現用戶“raj”具有所有權限。
surajsudo-lsudosu
因此,讓我們直接切換到root用戶帳戶,并訪問root shell。至此,我們已成功利用xxd命令提升了我們的用戶權限。
總結
以上是生活随笔為你收集整理的Linux的xxd命令怎么使用的全部內容,希望文章能夠幫你解決所遇到的問題。