MoeCTF 2022
Web
baby_file
题目
解题
这题是简单的文件包含,先用 dirsearch 扫描一下。
可以扫描到 /flag.php
,通过构造以下 Payload
可以获得到 flag.php
的源码
ezhtml
通过 右键 - 查看网页源代码
寻找答案没有结果,发现底下有个 evil.js
,访问该文件可以得到 flag 力!
what are y0u uploading?
随便提交一个图片可以得到以下回显
通过修改 Request 中的 filename
为 f1ag.php
即可得到 flag 了。
ezphp
先来分析源码~
分析结束后,通过构造以下 Payload
就可以获得到 flag 了,原理是先将 test 的值复制 flag 的值,又因为必须存在一个 $_GET['flag'] === 'flag'
,因此将 flag 的值改为 test 的值就可以了。
Sqlmap_boy
查看网站源代码可以发现
通过访问 http://node2.anna.nssctf.cn:28497/login.php
回显
应该可以推断为布尔注入,通过编写以下代码
可以得到数据库名为 moectf
,通过修改上面代码中的变量 params 成如下内容
可以得到数据库表 articles,flag,users
,通过修改上面代码中的变量 params 成如下内容
可以得到列名 flAg
,通过修改上面代码中的变量 params 成如下内容
就可以得到 flag 力!
cookiehead
题目包含 cookie ,那就是 Cookies 里面一探究竟!
首先打开题目后到达第一关 仅限本地访问
,用 HackBar 添加 Header
之后提示 请先登录
,将 Cookies 修改成 login=1
即可。
最后一关 You are not from http://127.0.0.1/index.php !
则添加 Header
就可以得到 flag 啦!
God_of_aim
右键查看源代码可以得到提示
可以在 aimtrainer.js
文件中发现 checkflag1()
和 checkflag2()
函数,在 Console 输入 _0x78bd
可以得到回显
就可以得到 flag moectf{Oh_you_can_a1m_and_H4ck_Javascript}
了!
Reverse
Reverse入门指北
flag 就在指北最底下,好耶,是指北!
checkin
使用 IDA 打开后就可以发现 flag 力!
Hex
使用 010 Editor 打开 Hex.exe
后搜索 moectf
可以发现 flag
Base
使用 IDA 打开后对着 main
F5 就可以发现 base64 加密内容
并且在 main
中还可以发现一个符号表
通过 CyberChef 一把梭可以得到 flag moectf{qwqbase_qwq}
begin
使用 IDA 打开后对着 main
F5 就可以发现
通过分析以上代码可以发现需要对每个字符与 0x19
进行异或运算,若和 Str2
比对完全一致则弹出正确,通过双击也可以发现 Str2
的内容。
整理内容可以得到一个数组
编写 Python 代码对数组内容进行异或运算并且转为字符就可以得到 flag 了。
Pwn
shell
Crypto
vigenere
https://www.guballa.de/vigenere-solver
解码后就可以得到 flag moectf{attacking_the_vigenere_cipher_is_interesting}
了
0rsa0
第一关
打开文件后可以看到 e1=3
,可以使用低加密指数攻击。
通过低加密指数攻击可以得到明文 T8uus_23jkjw_asr
第二关
可以发现存在 dp 泄露,因此可以通过泄露的 dp 进行攻击。
通过 dp 泄露攻击可以得到明文 _3d32awd!5f&#@sd
所以 flag 就是 moectf{T8uus_23jkjw_asr_3d32awd!5f&#@sd}
Signin
这道题的 phi 与 e 并不互素,尝试用 gmpy2.invert(e, q - 1)
不行,用 d = gmpy2.invert(e, p - 1)
可以。
一次就好
根据题目文件可以看出两个素数是相近的,并且明文是经过异或运算的
smooth
根据文件中的 get_vulnerable_prime()
函数可以得出 p-1 是光滑数,
光滑数 (Smooth number):指可以分解为小素数乘积的正整数
通过费马小定理和 Pollard's p-1 算法就可以分解 n 了。
第二关则考的是 Wilson 定理,即 (p - 1)! ≡ 1﹡(p - 1) ≡ -1 (mod p)
。因为题目已经将 flag 乘以 1 到 P - 1729 (不包含 P - 1729) 取模,因此我们需要继续乘以 P - 1729 到 P - 1 ,这样就可以使用 Wilson 定理来求出真正的 flag 了。
现在的 flag 就是 flag * (p - 1)!≡ -1 * flag (mod p)
,因此将 flag 取反取模就可以得到真正的 flag 了。
完整代码如下
入门指北
运行参考答案即可获得 flag ,好耶!是指北!
moectf{Welc0me_t0_fascinating_crypto_w0rld}
MiniMiniBackPack
https://ctf-wiki.org/crypto/asymmetric/knapsack/knapsack/
题目脚本
解题
通过分析题目脚本可知 flag 转成了二进制后,通过 gen_key()
函数来生成一个 key 数组,并且通过 assert a > sum(key)
使得 key 数组中的所有之和比 a 小,这也说明这是一个超递增序列。
之后就是从 m 的后 i 位开始从后往前与 1 进行与运算,并且将其的值作为 key[i] 的指数,若 m 的后 i 位为 1 则 c 在原基础上加 key[i],反之则加 1。
解题将 key 数组倒序即可获得正序的 flag ,解题过程将上诉加密过程逆序即可。
Misc
Misc指北
文档末尾存在摩斯电码,内容如下
用 CyberChef 一把梭可以得到 flag moectf{WEL2OME_4O_MI3C_1UCKY!}
nyanyanya
用 StegSolve 查看图片可以发现 Red plane 3 有文字。
用 Data Extract 设置 Red plane 0、Green plane 0、Blue plane 0,可以发现 flag 就出来了
cccrrc
crc32 爆破脚本 https://github.com/theonlypwner/crc32
看标题猜测是 压缩包crc爆破(
点击打开压缩包可以看到压缩后大小都是 16,满足爆破条件
将得到的 16 个字节(6d6f656374667b7177715f637263217d) 转换为字符串(moectf{qwq_crc!}) flag 就出来咯!
zip套娃
拿到压缩包后打开压缩包发现没有压缩包密码的踪迹,那就只能用 Archpr 狠狠的爆破了(悲
Archpr 尝试 1 至 6 位数字爆破可以得到密码是 1235 ,解压后可以得到 fl.zip
和一个提示 密码的前七位貌似是1234567 后三位被wuliao吃了
。
那就通过掩码暴力破解,设置掩码为 1234567???
进行爆破可以得到密码 1234567qwq
,解压后得到 fla.zip
和一个一摸一样的提示,继续使用掩码破解发现无效,用 010 Editor 查看 fla.zip
可以发现文件数据区的全局加密为 00
而文件目录区的全局方式位标记却是 01
,说明这个 zip 文件为伪加密文件。
修复方式就是把 01
改成 00
即可。
解压后就可以得到 flag moectf{!zip_qwq_ZIP}
usb
http://www.manongjc.com/detail/25-cxtkhbqgdxkwlwz.html
将下载下来的文件丢到 kali 用 Wireshark 打开,可以看到基本都是 HID Data ,那就将 HID Data 的数据提取出来。
读取后通过引用中的脚本进行解码就可以得到 flag moectf{Learned_a6ou7_USB_tr@ffic}
,完整代码如下
Locked_bass
题目描述 这锁虚挂着的,能踹
提示压缩包应该是伪加密,通过 010 Editor 打开后将两个 09 00
修改为 00 00
即可修复并解压获得 Unlocked bass.zip
。
在 Unlocked bass.zip
内可以发现 Unlocked bass.txt
,里面包含一串 base64 编码内容。
使用 CyberChef 一把梭就可以得到 flag moectf{N0w_th1s_i4_a_b@ss_U_can_u3e_to_pla9}
what_do_you_recognize_me_by
把文件拖入 010 Editor 可以明显发现这是 PNG 格式的图片,但是文件头不对,修复文件头为 89 50 4E 47
后就能打开图片了。
给文件补上后缀名 .png
后打开图片是一个二维码
使用软件扫码后可以得到 flag moectf{You_r4c0gnize_%e!}
小纸条
Hint: 全部大写,无分隔
猪圈密码
根据上图进行解码可以得到 flag moectf{ILOVEMYBIGBED}
rabbit
用 010 Editor 打开图片可以在末尾发现一串 Rabbit 加密数据
解密后可以得到 flag moectf{We1c0m3_t0_moectf_an7_3n7oy_y0urse1f}
CCCC
把文件丢到 CLion 跑一下就能得到 flag moectf{0h_y0u_can_run_a_C_pr0gram!}
。
Python
把文件丢到 PyCharm 跑一下就能得到 flag moectf{Python_YYDS!}
。
run_me
用 cmd 运行就可以啦~
run_me2
把文件丢到 kali 在终端里输入运行即可,运行前需要注意 右键-属性-权限-(勾选)允许此文件作为程序运行
。
A_band
用 CyberChef 将二进制转十六进制,之后十六进制转字符串,发现有很多颜文字,经过百度发现是 AAencode
加密,解密后可以得到以下内容
经过 Base32 解密后得到以下内容
经过 Base58 解密后得到以下内容
经过 Base64 解密后得到以下内容,即 flag
bell202
下载附件得到文件 moe_modem.wav
百度找了半天 misc 调制解调器解码
没找到,通过题解才发现原来是 minimodem
,学到力!
想听点啥
MuseScore 下载 https://musescore.org/zh-hans/download
下载压缩包打开后可以发现一个未知的 .mscz
文件,经过百度后下载 MuseScore
安装后打开该文件在末尾可以发现 7z 压缩包密码 MOECTFI1iKE
。
解压后可以得到 qaq.py
和 flag.txt
,其中 qaq.py
为 flag 的加密代码。
其中 encrypt()
函数会将 flag 的后一位与前一位进行异或运算并输出值,因此将这一过程逆序即可。
寻找黑客的家
图上有十分明显的 汉明宫
以及预约电话 xxxxx33085
,用百度地图搜搜就出来力。
flag moectf{shenzhen_longhua_qingquan}
hamming
(15, 11) 汉明码:共 16 位,其中数据位有 11 位,奇偶校验位有 5 位。第 0 位为总的奇偶校验码,第 2^n 个为每个部分的奇偶校验码,通过两个奇偶校验码可以确认错误的在哪里并进行纠正,但当出现两次错误时,就无法纠正了,只能识别到存在错误。