CTF初体验 | Mayx的博客
Author: mayx
Description: 我好菜啊
Date: 2019-12-16T00:00:00+08:00

16 December 2019 - 字数统计：1673 - 阅读大约需要6分钟 - Hits: Loading...

# CTF初体验

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章是关于作者初次体验CTF挑战的经历。他被同学邀请参加线上CTF比赛，虽然对CTF有所了解但从未真正参与过。文章描述了作者的参赛过程，他尝试了Cookie相关的题目，但因为对题目的理解错误和操作不当而未能解出。接着，他解决了涉及git的Swedish State Archive问题，通过Git Extract工具找到了Flag。尽管最终因水平不足未能完成所有题目，作者仍对CTF比赛表示出兴趣，并计划今后深入学习。他还设想将网站迷宫类型的解谜元素融入到前端编程中，类似于CTF挑战。

- 开端
- 答题
- 结语

我好菜啊

#
开端

前几天，有一个同学邀请我去打个线上CTF，我大概看了下时间，是在周末，于是我就答应了。

以前我倒是对CTF也有些了解，曾经也试着在网上找到一些题，不过那些题的评论区总是有一堆人透答案，体验极差，所以其实我也没真正做过CTF的题。

不过我曾经也攻击过一些网站，也算有点经验吧，所以觉得问题应该不大。

#
答题

到了周末，我还是像往常一样睡到中午，不过没关系，这个比赛持续2天，所以无所谓。

等到我想答题的时候题目也基本上全部都出来了，我打开网站一看，题的类型挺多的，有涉及密码学、二进制、文件组成、溢出之类乱七八糟的东西。当然我全都不会 （于是就凉了）。

虽然大多数都不会，不过至少我还是学过一些HTTP协议之类的东西，所以觉得我至少要解出一道Web题吧。

首先吸引我的是一个叫做Cookie的题，我想既然它叫Cookie，那么大概就是改改cookie就能解出来吧。题目大概是我有$50，有三种饼干，Flag饼干最贵，要$100，因为买不起，所以得不到Flag。那么解法应该就是想办法改我有的钱的，然后再去买Flag饼干就OK了吧。以这个思路，我看了下cookie，那是一个被base64编码后的json，解码后发现，里面有一个叫做money的key，这下我想那不就解出来了嘛，我修改了money的value，编码后提交，钱的数量不出意料的变了，然后我就去买Flag饼干，但是不知道为什么，改完以后所有饼干都买不了了……所以这道题最后没有解出来…… （太菜了）

之后我换了一道题，那道题叫做Swedish State Archive，打开后发现是一个正在维护的网站，查看源代码后发现了服务器的源码：

    from flask import Flask, request, escape
    import os

    app = Flask("")

    @app.route("/")
    def index():
        return get("index.html")

    @app.route("/<path:path>")
    def get(path):
        print("Getting", path)
        if ".." in path:
            return ""

        if "logs" in path or ".gti" in path:
            return "Please do not access the .git-folder"

        if "index" in path:
            path = "index.html"

        if os.path.isfile(path):
            return open(path, "rb").read()

        if os.path.isdir(path):
            return get("folder.html")

        return "404 not found"

    if __name__ == "__main__":
        app.run("0.0.0.0", "8000")

虽然我Python学的不多，但是至少我看到了`.gti`，看来是通过git获得Flag的题，但是它屏蔽了文件夹和index和logs两个路径的关键词……这该怎么做……后来我去网上搜了下解git类型的ctf的题，大多数人都用了一个叫做Githack的工具，我大概看了一下，这是个Python的脚本，但是它依赖于index文件，所以不能用。正当我要放弃之时，我发现了一个叫做Git Extract的工具，我试了一下，直接Flag就出来了😂，我当场就赏它了一个star……看来还是工具好用……

其他的题受限于水平原因，实在是做不出来……于是本次的CTF就这么结束了……

#
结语

CTF还是挺有意思的，看着我也想举办一个。不过除了CTF外还有另外一个更加大众化的东西，叫做网站迷宫，大概就是通过找线索，然后一层一层的往深处走的游戏，有点像解谜爬塔的游戏。

我想了想，这种游戏也可以做一个纯前端版，每个下一题都被AES加密，所以只有上一题解出来得到密码才能得到下一题，这听起来有点像CTF呀，不过本来好多CTF的题也是一个文件，Web的题不算多。

不过我自己连题都做不出来，还想什么出题😂……还是多研究研究吧。

另外如果我以后想去试试挑战CTF的话，就可以去CTFtime上看看了。

tags: CTF - Python 查看原始文件

#### 推荐文章

Loading...

上一篇：废人的研究
下一篇：New Game!
想问这篇文章
召唤伊斯特瓦尔