問題描述:
攻防世界文件包含入門題目,參考大佬們的WP有所補充,內(nèi)容對小白友好~
原因分析:
按照慣例,首先查看源代碼ctrl+u:
整理一下大概是下面這個意思(代碼0基礎(chǔ),可能有誤,歡迎留言溝通與指正~)
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
//規(guī)定 HTML 文檔的字符集
<br />
<b>Notice</b>: Undefined index: language in <b>/var/www/html/index.php</b> on line <b>9</b><br />
Please choose the language you want : English or Chinese
<h1>Hi,EveryOne,The flag is in flag.php</h1><html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
//頁面顯示內(nèi)容,其中提示了language的設(shè)置與地址,flag所在地址。
<?php
if( !ini_get('display_errors') ) { //如果 環(huán)境變量未設(shè)置錯誤回顯
ini_set('display_errors', 'On'); //則 開啟錯誤信息回顯
}
error_reporting(E_ALL); //報告所有類型的錯誤
$lan = $_COOKIE['language']; //將cookie中['language']的值賦予lan
if(!$lan) //如果變量 lan為0
{
@setcookie("language","english"); //向客戶端發(fā)送cookie(名稱為"language",值為"english")
@include("english.php"); //文件包含(調(diào)用文件"english.php")
}
else //若不滿足上述條件
{
@include($lan.".php"); //文件包含(調(diào)用變量$lan,添加后綴".php")
}
$x=file_get_contents('index.php'); //將文件 index.php的內(nèi)容讀入變量 x中
echo $x; //輸出 變量x的值
?>
</html></html>
所以題目的關(guān)鍵在于達成這第15行的條件:
$lan = $_COOKIE['language'];
在cookie中的內(nèi)容language 會被傳到變量$lan,繼而在第23行@include($lan.".php");被調(diào)用與執(zhí)行,因此cookie變量中很適合寫入讀取flag.php的payload~
解決方案:
工具:burpsuite 或 hackbar(瀏覽器插件)
參考:admin發(fā)表的官方WP?zhan3614發(fā)表的WP fileinclude?
1?Burp Suite抓包
首先用Burp Suite攔截網(wǎng)頁的請求包,頁面如下圖所示:
emm,發(fā)現(xiàn)沒有題目要求的變量cookie,這樣就很難實現(xiàn)題目要求的條件了...
2 添加cookie
現(xiàn)在需要手動添加cookie,可以通過burpsuite或者hackbar添加~
1)Burp Suite,在頁面的右下角Request Cookies可以找到添加變量的位置~
? Name:language
? Value:php://filter/read=convert.base64-encode/resource=/var/www/html/flag
? Name的值為第15行代碼要求的名稱,Value的值可將flag(.php)內(nèi)容以Base64編碼的形式讀取~
php://filter/read=執(zhí)行文件讀取功能~(官方介紹:PHP: php:// - Manual)
convert.base64-encode執(zhí)行Base64編碼功能~
/resource=/var/www/html/flag填寫flag.php所在的地址,本題在源碼的第5行有提示地址為language in <b>/var/www/html/index.php</b> on line?;且需要注意注意源碼第23行的內(nèi)容(@include($lan.".php");?),在上傳參數(shù)時代碼會附帶后綴.php,所以此處不需要寫為?'/var/www/html/flag.php'~
或者可以直接復(fù)制這一行到請求包末尾(同樣的語句,經(jīng)過URL編碼):
Cookie: language=php%3a%2f%2ffilter%2fread%3dconvert.base64-encode%2fresource%3d%2fvar%2fwww%2fhtml%2fflag
消息變成如下所示以后發(fā)送:?
然后就得到了一個 編碼為Base64的flag,如下圖~
右鍵傳到burpsuite自帶的解碼模塊decoder中可以解碼~
?$flag=cyberpeace{9fbd1f023749c48900cf215fe902c204}
2)采用chrome的擴展工具hackbar 添加cookie的值;解題的思路與上面是一致的:F12調(diào)出開發(fā)者工具,操作步驟如下圖就可以~
Name:cookie
Value:language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag
頁面上方回顯以base64格式編碼的flag,復(fù)制到網(wǎng)址欄,隨后可用hackbar自帶的解碼模塊encoding找到base64 encode選項進行解碼~
flag=cyberpeace{9fbd1f023749c48900cf215fe902c204}
博文寫得模糊或者有誤之處,歡迎留言討論與批評~文章來源:http://www.zghlxwxcb.cn/news/detail-404730.html
碼字不易,若有所幫助,可以點贊支持一下博主嘛?感謝~(●'?'●)文章來源地址http://www.zghlxwxcb.cn/news/detail-404730.html
到了這里,關(guān)于Web安全攻防世界01 fileinclude(宜興網(wǎng)信辦)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!