You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mabbs/_posts/2021-11-27-createctf.md

24 lines
5.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
layout: post
title: 记一次CTF出题的经历
tags: [CTF, 记录]
---
现在我终于把CTF的全流程都体验了一遍<!--more-->
# 起因
去年我们学校整了CTF我作为协办方的一员[组织了那场比赛](/2020/11/24/createctf.html)而今年又是一年一度的CTF比赛这次我有了组织了经历就想换点别的因为前段时间我还在[线下打过CTF](/2021/09/06/offlinectf.html),相比去年有了更加丰富的经验,所以这次的比赛我就不维护平台了,而是试着去出题。
# 出了什么题?
说是有丰富的经验但是实际上我又不是信息安全专业的也没有专门去练过怎么打CTF所以我实际上也不咋会出题😂。不过没关系我前几次CTF也有解出来过题目那就用他们的思路来出些题目吧当然在CTF里还是得出点原创题如果直接去抄别人的题还是非常不好的行为毕竟对于这种情况搜到的人会感觉很没意思而对于没搜到的人也很不公平毕竟这不是搜索技能大赛。不过借鉴思路还是没有问题的毕竟对于普通人来说还是得用普通思路解题。
## 第一题
所以第一题我缝合了两年前打过的CTF中一道叫[Swedish State Archive](/2019/12/16/ctf.html)的题目和前几个月打过的CTF中一道[关于PHP判断MD5漏洞](/2021/09/06/offlinectf.html)的一道题。在这个题中首先要绕过Python的那些条件才能获得PHP的源码而且我没有在git中直接提交flag所以难度比那单个题目更难了获得了PHP的源码之后就可以用那个MD5的漏洞来获得真正的flag了。总的来说难度还可以毕竟这还是正常思路可以解决的问题。最终解出来的情况我也很满意有12个队伍解出来了。
## 第二题
第一题既然用了别人的思路,第二题自然要自己整点有意思的题目。在我弃坑[MaBBS](https://github.com/Mabbs/Mabbs.Project)之前,我在项目中发现了严重的安全漏洞,那就是我的程序在创建比如贴子之类的东西是直接用标题作为文件名的,而且我最开始的时候没有做任何的过滤。当时我首先写了一个叫做`danw`的函数来过滤有可能出问题的字符但是我只给Wiki部分加了这个过滤函数。这是为啥呢是因为我当时想把贴子整成ID的形式然后把贴子的标题写到meta里面。可惜后来弃坑了就再也没有管这个问题只留下一句只有上帝才能看得懂这个代码就结束了MaBBS。也许[重建MaBBS的计划](/2019/07/01/mabbs.html)也再也没有机会完成了毕竟失去了当时写程序的初心现在也只是会写程序罢了……emmmm有点跑题了。总之既然有这样的漏洞那我可以部署出来让我看看那些学信息安全的家伙到底是什么货色看看是真的只会按着解题思路来解题还是真的有分析代码的能力。结果也不出我所料果然全是一群废物除了我曾经告诉过漏洞的人除外没有一个人解出来。不过也正是因为我知道那个题有人可能知道答案所以分数也不会定很高不然我觉得这可能真的无人会解。
## 第三题
第二题可能太原创了对于他们没有接触过实战的人来说不合适所以第三题我和另外一个学信安的朋友一起出这道题我们决定用APICloud他们公司的能力作为这道题难度的上限。APICloud有一个加密HTML源代码的功能目前我们在网上没有搜到已经破解的方案。不过如果网上无人会破那作为出题者的我们自己也破不出来啊……毕竟这个题要是没有方案能解那出题的意义就没有了而且万一要我们自己写WriteUp的话那不就尴尬了。所以我们换了一个思路用它加密本来就不考虑让其他人解密但是我们在里面偷偷放一个可以调试的工具在里面比如vConsole。然后给JS代码二次加密使得解题者只有一条路可以走那就是使用调试功能来干涉程序。这次我们写的是一个抽卡程序目标是点够20亿次才能抽出来。所以这里我们可以直接用调试工具来修改点击次数来实现获得flag其实也主要是我们自己不会才整的这种烂方案。不过这个也不算难发现的人稍微想一想就能解出来所以如果以后有机会我还想再提高一个难度不给vConsole而是写一个请求比如`https://example.com/hello.js`然后需要解题者劫持hello.js来实现修改变量这样才更有意思可惜这次出题没想到这一点所以只能出个比较简单的。不过那群信安的家伙真的还是不行这么简单的题居然只有一个队伍解出来不过他能解出来我也觉得挺不错的证明他的思维比较开阔不那么局限。
# 出题感受和其他
这次CTF出题感觉还是挺有意思的而且挖坑还要想到自己怎么填这个也对找坑很有帮助。毕竟大多数情况真正的环境漏洞不会按常规路走能按常规路走的漏洞绝大多数情况都已经被人踏过了所以思维要开阔真正优秀的渗透工程师肯定是思路开阔想法很独特而目前那些学信安的就是一群思维固化除了解题不懂得其他东西的家伙以后找不到坑就等着背锅吧😂。
另外上个月末我还遇到一次很有意思的事情,有一个叫做[萌国ICP备案](https://icp.gov.moe/)的网站有个XSS漏洞于是我和同在那个网站上的几个网友进行了一次XSS AWD大战为了自己链接的特效而战非常的有意思可惜这个月初我生病了没能记录下这有趣的事情等我过两天再次想写博客时就分享一下这个有趣的事情吧