web大手子煉成記之warmup

2021-10-02 09:43:41 字數 2045 閱讀 7238

記xctf之wramup writeup!!!

開啟題目鏈結,f12發現提示,進入source.php,**如下

<?php 

highlight_file

(__file__);

class

emmmif(

in_array

($page

,$whitelist))

$_page

=mb_substr

($page,0

,mb_strpos

($page

.'?'

, '?

') );

if (in_array($_page, $whitelist))

$_page = urldecode($page);

$_page = mb_substr(

$_page,

0,mb_strpos($_page . '

?', '?')

);if (in_array($_page, $whitelist))

echo "you can't see it";

return false;}}

if (! empty($_request

['file'])

&& is_string($_request

['file'])

&& emmm::checkfile($_request

['file'])

) else

?>

開始**審計,發現hint.php

由以下**知,構造payload滿足$file不為空,是字串,滿足checkfile函式檢查就能將「file」檔案包含進去。

if (! empty($_request['file']) && is_string($_request['file']) && emmm::checkfile($_request['file']) ) else

再來看checkfile函式

public

static

function

checkfile(&

$page)if

(in_array

($page

,$whitelist))

$_page

=mb_substr

($page,0

,mb_strpos

($page

.'?'

, '?

') );

if (in_array($_page, $whitelist))

$_page = urldecode($page);

$_page = mb_substr(

$_page,

0,mb_strpos($_page . '

?', '?')

);if (in_array($_page, $whitelist))

echo "you can't see it";

return

false;}

}

四個檢查的地方:

1,檢查$page是否為空,是否為字串

2,白名單檢測,檢測 $page是否在陣列中,存在則 return ture;

3, $_page擷取?後面的內容進行白名單檢測

4,url解碼 $page後再擷取?後面的內容進行白名單檢測

綜上可構造payload(不唯一):?file=soure.php%253f…/…/…/…/…/ffffllllaaaagggg,即拿到flag!!!

注:構造%253f是因為瀏覽器自動解碼一次,即%253f url解碼一次後為%3f,然後再到checkfile函式解碼後為?,就可以成功繞過 return ture,將file檔案包含進來,,,,,得到了flag!

最後貼一下flag。。。。。。

Linux驅動煉成記 09 串列埠除錯

實現功能 主控 amlogic a113x 串列埠和mcu stm32 進行串列埠通訊,實現資料的傳輸,由stm32控制燈效.看似簡單的乙個雙方對接功能,還是走了不少彎路的.串列埠dts配置 amlogic a113x引腳編號 gpioz 8 i2c sck b uart tx ao b gpioz...

前端大師煉成記 中高階前端高階指南

五年前端三年加班 5 3 2,當你從事前端工作兩年後,你已經掌握了前端的基礎技能,也參與了大量的專案,量飛速增長,這個時候,你應該開始追求質量,而非數量。你可能經常聽見工程化 元件化 自動化 工具化 模組化等等詞語,也可能被問到效能優化 網路通訊 閱讀原始碼等等問題。如何從乙個初級前端,往中高階前端...

如易雲解密3 運營系統的動態性煉成記

系統體驗 運營系統demo admin admin 登入 一 單錶頁面的動態性 軟體行業 抽象能力非常重要,大家都知道。其實抽象程度的高低,決定了其所在領域的靈活性 動態性 我們運營系統的動態性顯示方面主要有賴於布局模板 aceadmin hplus等 和 jqgrid,然後服務端適配其抽象方式。整...