COCTF2024新生赛-出题人ranfey

发布于 2024-09-30  37 次阅读


COCTF2024新生赛-出题人wp

这次是我第一次出题,比想象中累但是也学到了很多

出的题目质量很低,而且还老是犯错,有的思路也比较跳跃,对不住各位师傅了,喂了坨大的

WEB

你知道我看过哪些番吗?

这是一个脚本题,图片的名称就是正确答案

image-20240929201447617

但是要200遍,所以就写个脚本来跑了

import requests
from bs4 import BeautifulSoup
from urllib.parse import unquote_plus
from time import sleep

import os

# 网页的URL
post_url = "http://ctf.ctbu.edu.cn:33768/"

# 使用 Session 保持会话
session = requests.Session()
# 准备初始 POST 数据
post_data = {"image_name": 0}
post_response = session.get(post_url)

for i in range(201):
    # 在同一会话中发送 POST 请求
    post_response = session.post(post_url, data=post_data)

    # 解析HTML内容
    soup = BeautifulSoup(post_response.text, "html.parser")

    # 查找所有img标签
    img_tags = soup.find_all("img")

    # 寻找flag
    if "coctf" in post_response.text:
        print(post_response.text)

    # 遍历img标签,提取src中的内容
    for img in img_tags:
        src = img.get("src")
        if src and src.startswith("test/") and src.endswith(".jpg"):
            # 提取test/和.jpg之间的内容
            image_name = src[len("test/") : src.rfind(".jpg")]

            # 准备要POST的下一轮数据 (x-www-form-urlencoded)
            post_data = {"image_name": unquote_plus(image_name)}

image-20240929202006844

救救文字先生!

题目描述:文字先生被魔法(post)召唤,从另一个世界(back-end)来到后身体被扭曲 你能找到他来到这个世界前原来的模样吗?

意思是另一个世界是后端,前端发送了post请求到后端然后返回了flag

加载完网页后就会发出post请求

这里的扭曲是不可逆的,是把flag经过base64加密然后随机位移

image-20240929202948706
image-20240929203215736

从何而来?

题目描述:梅普露从游戏世界通过src传送到了游戏的后台 她本来应该被拦下来 但是她的头上戴着一个证明自己是内部人员(loopback)的彩蛋头盔(host头) 于是她混了进去。。。。

我这题确实出的有点烂了,毕竟不只是Referer可以判断内外网。。。

这题的小游戏其实是个幌子,实际上是伪装内网访问

指向/flag.php路由的提示有两处,而且爬虫也可以爬出来

image-20240929204156189

image-20240929204218349

到达后会发现

image-20240929204247007

结合题目描述可以知道是修改host头,查看各类host头的作用,表明来源的就是Referer(当然,还有其他的)

image-20240929204355492

其实后面为了降低难度,变为修改host为内网网址一样允许通过

出题人在这里向大家谢罪了

登录就有..吗?

题目描述:告诉你账号密码啦,快登录吧 不知道怎么登录? 偷偷换块饼干(cookie)吧 ;

公告:「登录就有..吗? 」提交cookie要在/logout路由下提交,出题人英文文盲加手贱把login打成logout了,导致误解,非常抱歉!

应该很多人都会在主页提交cookie导致不成功,我谢罪QwQ

image-20240929210310724

就是登录的逻辑(可惜我打错了QwQ),到了登录的路由下后会获得初始的cookieSet-Cookie头

image-20240929210016835

又或者在登录路由后返回主页也可以看到已经被设置的cookie

Server: Werkzeug/3.0.4 Python/3.10.15可以知道是py的环境,结合session可以想到是flaskcookie-session伪造

当然,这样也比较难想到

所以后面页面的内容也可以判断出这点

image-20240929210417165

看一下F12

image-20240929210439778

直接搜索也可以知道

app.secret_key = "what_is_this_key_for"flask设置session加密密钥的常见方式

image-20240929214607806

然后搜索可以找到加密解密的脚本

这里用的是https://github.com/noraj/flask-session-cookie-manager

先把原来设置上的默认cookie-session解密,发现格式和密码都没问题,然后就开始按照给出的账号密码伪装

image-20240929210909559

然后应用回cookie去就可以获得flag

image-20240929211254401

[工具题]给Neuro送饼干 (最简单)

这题照着做就有啦(为啥不做,是牛肉sama不好看吗😭)

这题我甚至用上了gif教啊😭(gif点一下可以放大没人发现吗)

image-20240929212216121

按照提示设置了cookie后可以进入第二个界面

image-20240929212538635

然后也是按照提示,去看http历史

image-20240929212611150

image-20240929212620248

就可以直接看到neuro的flag

钓鱼🎣

直接访问会跳转回原来的平台页面,因为后面拦不到东西推测是前端跳转,所以清空缓存后重新拦一次

image-20240930183827494

可以看到是访问了一个down.php并带了一个get请求之后跳转回平台,所以直接访问这个试一下。发现会下载下来down.php

image-20240930184138575

可以看到down.php可以对任意路径下的文件下载下来

所以直接访问

image-20240930184248195

下载到flag文件,拿到flag

image-20240930184329018

hacker!!??

F12看一下有什么东西

image-20240930184639443

访问/hm.php

image-20240930184725880

POST请求中的“envlpass”参数的值不是“C0ba1t”。

所以就传呗

image-20240930185127412

改浏览器标识

image-20240930185306796

cookice

image-20240930185552958

进来后直接看根目录的flag

image-20240930185641983

Misc

CRazyBot

其实就是给bot发出的每句话都加了零宽隐写(为了实现这个效果专门找了网站原js代码来隐写方便能直接用网址解出)

image-20240929213241512

bot的话复制下来,其实可以很明显的发现字数不对

image-20240929213445034

或者拿一些像vscode这样的打开

image-20240929213623146

又或者复制到剪切板删除也会发现有不对劲的停顿

直接粘贴到网站(随便搜几个都可以)就可以解出

image-20240929214027445

image-20240929233207682

QQ:2219349024
最后更新于 2024-09-30