CTF | 2020 GACTF 一点点WriteUp


引言

这几天有个 GACTF,本来这几天有点事情没打算来看的,结果队里师傅突然扔来个代码,还以为是帮 debug,后来才发现是个 CTF 题目。。(坏耶

于是随意来看看题目了,就佛系做了几个题嘤嘤嘤,顺便来学点东西就是了。


Misc

crymisc

8.25 is Chinese Valentine’s Day.Yesterday my brother told me he was refused by a beautiful girl.He was sooooooooooooo sad and bursted into tears.
链接:https://pan.baidu.com/s/1EZzhnAa5Q4OD8y-YEAcjzQ
提取码:866h
https://drive.google.com/drive/folders/1gDfMBrtqwvi7f9BaB1ixjogeLDascjED?usp=sharing

下载下来一个 crymisc.docx,一看打不开果然改成 zip,发现有伪加密。

1.txt 内容为:

I'm going to tell her how i feel.DO YOU WANT TO KNOW WHAT I TOLD HER?

另外是一张图片,发现结尾有东西,至少有个压缩包。

3

3.jpg

提取出来。

SSB3YXMgcmVqZWN0ZWQuLi4uLi5USElTIElTIFRIRSBQQVNTV09SRDpJIFdhbm5hIENyeXl5ISEh

首先对上面这段 base64,得到压缩包密码。

I was rejected......THIS IS THE PASSWORD:I Wanna Cryyy!!!

压缩包需要先补上文件头,即变成 504B0304…

zip

拿密码去解压,文件内容如下。

🔭💙🐰✊🌻🐧💙😘🌻🍶💐🍌🏊🍩🚁🏊👹🐶😀🐶😀😘👹💙🍂💇😀😀😩🌻🍟👂🍶💐🍌🏊🍩👆🏠🙇🍂🍂👼😱🚔🐶👉✊😱🏠🙇🍂🍂👼😱🚊😧💨💙💕
That is what i told her↑↑↑

什么,您就是抽象带师?

想起来在 BJD3rd 里 TaQini 师傅就出过一题,就是 Manual 这题的一部分

参考那题的思路,盲猜就是 Codemoji 了!根据提示key应该就是个哭的表情吧,就😭这个了。

P.S.: codemoji GitHub repo (Mozilla Public License 2.0)

好耶,咱也部署一个!

就在这里了!-> https://codemoji.miaotony.xyz

欢迎来玩呀(

于是构造 payload 如下:

{"message":"🔭💙🐰✊🌻🐧💙😘🌻🍶💐🍌🏊🍩🚁🏊👹🐶😀🐶😀😘👹💙🍂💇😀😀😩🌻🍟👂🍶💐🍌🏊🍩👆🏠🙇🍂🍂👼😱🚔🐶👉✊😱🏠🙇🍂🍂👼😱🚊😧💨💙💕","key":"😭"}

base64encode + URLencode:

eyJtZXNzYWdlIjoi8J%2BUrfCfkpnwn5Cw4pyK8J%2BMu%2FCfkKfwn5KZ8J%2BYmPCfjLvwn4228J%2BSkPCfjYzwn4%2BK8J%2BNqfCfmoHwn4%2BK8J%2BRufCfkLbwn5iA8J%2BQtvCfmIDwn5iY8J%2BRufCfkpnwn42C8J%2BSh%2FCfmIDwn5iA8J%2BYqfCfjLvwn42f8J%2BRgvCfjbbwn5KQ8J%2BNjPCfj4rwn42p8J%2BRhvCfj6Dwn5mH8J%2BNgvCfjYLwn5G88J%2BYsfCfmpTwn5C28J%2BRieKcivCfmLHwn4%2Bg8J%2BZh%2FCfjYLwn42C8J%2BRvPCfmLHwn5qK8J%2BYp%2FCfkqjwn5KZ8J%2BSlSIsImtleSI6IvCfmK0ifQ%3D%3D

而后丢去解密。

https://codemoji.miaotony.xyz/share.html?data=eyJtZXNzYWdlIjoi8J%2BUrfCfkpnwn5Cw4pyK8J%2BMu%2FCfkKfwn5KZ8J%2BYmPCfjLvwn4228J%2BSkPCfjYzwn4%2BK8J%2BNqfCfmoHwn4%2BK8J%2BRufCfkLbwn5iA8J%2BQtvCfmIDwn5iY8J%2BRufCfkpnwn42C8J%2BSh%2FCfmIDwn5iA8J%2BYqfCfjLvwn42f8J%2BRgvCfjbbwn5KQ8J%2BNjPCfj4rwn42p8J%2BRhvCfj6Dwn5mH8J%2BNgvCfjYLwn5G88J%2BYsfCfmpTwn5C28J%2BRieKcivCfmLHwn4%2Bg8J%2BZh%2FCfjYLwn42C8J%2BRvPCfmLHwn5qK8J%2BYp%2FCfkqjwn5KZ8J%2BSlSIsImtleSI6IvCfmK0ifQ%3D%3D

得到flag。

flag

WelcometoGACTF!ThisisthepasswordGACTF{H4ppy_Mi5c_H4ppy_L1fe}

Web

simpleflask

题目每10分钟重启,如遇到无法连接,请稍等片刻10秒左右会全部重启完毕
This topic restart every 10 minitues. If you can’t connect, please wait for a while and the restart will be completed. Do not panic

China:
124.70.153.63 80-89
Overseas:
149.28.80.82 80-89

POST 访问,提示 request.form["name"]

带上参数 name,尝试 SSTI,发现有戏。

SSTI_test

某次利用报错看到了部分源码。

source

除了过滤了flag,在这个check函数里还过滤了许多,尝试发现,包括但不限于 os, system, pwd, popen, eval, import, request, mro, ', %, +, ,, (空格), |, \x 等等关键字或符号都被滤掉了……

单引号不行,但双引号可行,发现利用 "op""en" 的形式拼接字符串可行。

本来想找 PIN 的,但试了试所需的信息整不来(好菜啊),可以参考 Flask debug pin安全问题 这一篇文章。

于是又整了半天绕过……

首先拿到 object

object

subclasses

globals

一顿操作拿到 __builtins__

发现chr之类的函数并没有,然而并不能用 {% xxx %} 来设置就很难受。

__builtins__

本来想用 os.popen 这一模块来执行命令读取信息的,但不知道为啥read()就被拦了。

os

read

最后问了队里大师傅,发现换成open就完事了,太草了!

Payload:

name={{[].__class__.__bases__[0].__subclasses__()[127].__init__.__globals__.__builtins__["op""en"]("/fl""ag").read()}}

flag

GACTF{fac9165b6a2b5ac8bd3b99fad0619366}

后面再整理一下 flask 的 SSTI 常用 payload 及绕过技巧吧(

大概率会咕咕咕(

EZFLASK

flask&flask

China:
124.70.206.91 10000-10009
Overseas:
149.28.226.175 10000-10009

# -*- 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)

他这个 flask 服务器为 Werkzeug/1.0.1 Python/2.7.18。

访问 /ctfhint,得到

too young too simple

POST /eval

post eval

没找到哪里能用?

admin 没找到 route 在哪,并不知道怎么用 emmm。

(等复现嘤嘤嘤


大概就这么多,开学了喵呜~

(溜了溜了


文章作者: MiaoTony
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 MiaoTony !
评论
  目录