ctfshow_年ctf-wp

目录

 

除夕

 初一

初二

初三 

 初四

 初五


 

除夕

25bb55a733f744b0a20a109c1dad1191.png

 弱比较绕过          payload:?year=2022.

 02ad67e9e7a04ff48dc8d471e77653b5.png

 初一

105be9fdc6f449cab7462c8cc7d9c963.png

U2FsdGVkX1+M7duRffUvQgJlESPf+OTV2i4TJpc9YybgZ9ONmPk/RJje 

一眼丁真rabbit解密,key是2023

157a72a131494287833324f28723726b.png

初二

题目描述

0e1e93934ae04f8fb53559a6e6f956e9.png

附件内容:

4b2e7e7f053441eaa497623359f5ec51.png

打开脚本看看

4270151f16464fd0825cab4b1e84bded.png

58422bb7fa6f494e8f14347a024b708b.png

运行一下看看

31f55a66e5d84b0687de4352c14c2fc3.png

 附件只有两个,可能flag在脚本里

ce1c030a9b2e4ac390056038ab8e40a4.png

初三 

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2023-01-19 10:31:36
# @Last Modified by:   h1xa
# @Last Modified time: 2023-01-19 13:11:08
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
extract($_GET);
include "flag.php";
highlight_file(__FILE__);


$_=function($__,$___){
    return $__==$___?$___:$__;
};
$$__($_($_GET{
    $___
}[$____]{
    $_____
}(),$flag)); 

 变量覆盖

用下划线做变量名,而且花里胡哨的看上去有点难受

稍微美化一下

$_=function($__,$___){return $__==$___?$___:$__;};

$$__($_($_GET{$___}[$____]{$_____}(),$flag));

定义了一个函数$_,对于传入$__,$___ 两个参数进行弱比较,相等则返回$___,不相等则返回$__

($_($_GET{$___}[$____]{$_____}(),$flag));

这里调用函数,将$_GET{$___}[$____]{$_____}()作第一个参数与$flag作弱比较

这样子思路就是要让弱比较相等,让函数返回$flag,再将它打印出来

 给$__赋值a,则$$__等价于$a,再给a赋值print_r,则$$__==print_r

那么整体$$__($_($_GET{$___}[$____]{$_____}(),$flag));就等价于print_r($flag)

//var_dump也可以,但是echo不行,有个()

接下来就是让弱比较相等了

($_GET{$___}[$____]{$_____}等价于$_GET[$___][$____][$_____]

相当于一个三维数组

需要用到无参函数,最常见的就是phpinfo()啦

构造x[b][c]=phpinfo&___=x&____=b&_____=c就相当于构造传入了phpinfo

bd4561aef3ae4430ad07149c947bcb5c.png 将phpinfo()和字符串弱比较返回true,这就是为什么要用phpinfo

最终payload:

?__=a&a=print_r&___=x&____=b&_____=c&x[b][c]=phpinfo

e0671334e85b4141836b7764d07dd918.png

 

 初四(复现

流量分析,过滤http流

ca323b0dc24d4029b2903773be7a943d.png

 观察后面的数据流,应该是一个盲注的流量

import pyshark, re
from z3 import Ints, Solver, sat
from urllib.parse import unquote

t1 = pyshark.FileCapture(r'misc.pcapng', display_filter='http')
cacheCharControl = {}
searchChar = re.compile("1' and (ascii|ord)\(substr\(\(\(select concat_ws\(char\([0-9]+\), hackerHasNoFlag\) from flagInHere limit 0,1\)\), [0-9]+, 1\)\)<[0-9]+;--", re.RegexFlag.IGNORECASE)
for first in t1:
    if hasattr(first, 'http'):
        if hasattr(first.http, 'response_for_uri'):
            requestURI = unquote(str(first.http.response_for_uri))
            if searchChar.search(requestURI) is not None:
                locationID = int(requestURI.split('limit 0,1)), ')[1].split(',')[0]) - 1
                biggerNum = int(requestURI.split(', 1))<')[1].split(';--')[0])
                if locationID not in cacheCharControl:
                    cacheCharControl[locationID] = []
                if 'Hacker' in str(first.http.file_data):
                    cacheCharControl[locationID].append((biggerNum, False))
                else:
                    cacheCharControl[locationID].append((biggerNum, True))
t1.close()
x = Ints('x')[0]
flag = Solver()
for startID in range(len(cacheCharControl)):
    flag.push()
    for unit in cacheCharControl[startID]:
        if unit[1]:
            flag.add(x < unit[0])
        else:
            flag.add(x >= unit[0])
    if flag.check() == sat:
        print(chr(int(str(flag.model()[x]))), end='')
    flag.pop()

不知道为啥,可能是python版本的问题,在windows没跑通,在kali跑出来了

得到

2f2cb2d9c1b6443982ba6ed1a2c291b4.png 丢网站里面爆破

7bdcbe3e00b74a9995187664c378fc8d.png

 初五

0d7d80f289914e51842ac566c832e6d2.png

 YDHML_QKA_PDK_HVD_NAHI_OQ_K_GR

一开始还以为是啥外星电码或者和三体有关呢

仓颉编码解码:仓颉编码为YDHML的汉字_仓颉编码查询_就要查 (quchacha.com)

5a0c4ea73ff044d887a53ec4a2937a5e.png

 2630a854044d40a2a2952b0b6366fde3.png

 NAHI  这个是兔,在这个网站找不到,

ae031176aa444151bd584ad3ee6c856f.png

还有那个k查出来也是错的,

换个网站查或者猜一手flag

ctfshow{新春快乐兔年大吉}

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值