前言
Catf1agCTF 是一个面向所有CTF(Capture The Flag)爱好者的综合训练平台,尤其适合新手学习和提升技能 。该平台由catf1ag团队打造,拥有超过200个原创题目,题目设计注重知识点的掌握,旨在帮助新手掌握CTF相关的各种技能 。除了新手题目,平台也包含难度不一的题目,适合不同水平的CTF参与者 。
平台上的题目类型多样,包括WEB、MISC、CRYPTO、LINUX、PWN/ATTACK、REVERSE等,题目分数制度从60分到100分不等,难度从1星到5星 。题目提交时需要包含完整的题目环境、flag以及writeup,以确保题目的完整性和可解性 。
此外,Catf1agCTF平台还提供了一些辅助工具和资源,如在线工具箱、SRC资料和HW资料等,以帮助用户更好地进行学习和实战演练 。平台的网址为 https://catf1ag.cn/,有意向的用户可以通过官方邮箱catf1ag@163.com进行联系 。对于想要加入交流的用户,平台还提供了官方QQ群和频道,方便用户之间的互动和交流 。
需要注意的是,平台上的部分题目可能需要特定的环境配置,例如WEB题目会包含dockerfile,而PWN/ATTACK题目则必须包含dockerfile以确保题目环境的完整性 。对于题目的flag格式,平台有统一的要求,即flag需要以"catf1ag{}"的格式呈现 。
总的来说,Catf1agCTF是一个资源丰富、适合各个水平CTF爱好者的训练平台,无论是新手还是有经验的参与者,都能在这里找到适合自己的学习和提升机会。
一、欢迎大家来到Catf1ag综合训练平台
打开靶场
二、easy_python
打开靶场
下载文件发现是经过 PyInstaller 编译后的文件
下载 pyinstxtractor.py 工具进行反编译
https://github.com/extremecoders-re/pyinstxtractor
反编译过后可以看到有一个 flag.pyc
记事本打开即可拿到 flag
三、class
打开靶场
下载文件后是个 class 文件,直接在 IDEA 中打开
import java.util.ArrayList;
import java.util.Scanner;
public class Reverse {
public Reverse() {
}
public static void main(String[] var0) {
# 创建一个 Scanner 对象用于从控制台读取用户输入
Scanner var1 = new Scanner(System.in);
System.out.println("Please input the flag :");
# 从用户输入读取下一个字符串(以空格作为分隔符)
String var2 = var1.next();
System.out.println("Your input is :");
System.out.println(var2);
# 将字符串转换为字符数组,以便逐个字符进行处理
char[] var3 = var2.toCharArray();
Encrypt(var3);
}
public static void Encrypt(char[] var0) {
# 创建一个空的 ArrayList 用于存储加密后的字符
ArrayList var1 = new ArrayList();
# 遍历输入的字符数组 var0
for(int var2 = 0; var2 < var0.length; ++var2) {
# 将字符的 ASCII 码加上 64,结果与 32 进行按位异或运算
int var3 = var0[var2] + 64 ^ 32;
# 将加密后的结果存储到 var1 列表中
var1.add(var3);
}
int[] var5 = new int[]{131, 129, 148, 134, 140, 129, 135, 155, 138, 129, 150, 129, 191, 133, 129, 147, 153, 191, 133, 129, 147, 153, 157};
ArrayList var6 = new ArrayList();
for(int var4 = 0; var4 < var5.length; ++var4) {
var6.add(var5[var4]);
}
System.out.println("Result:");
# 将用户输入加密后的结果 var1 与预定义的加密结果 var6 进行比较。如果两者相等,表示输入正确
if (var1.equals(var6)) {
System.out.println("Congratulations!");
} else {
System.err.println("Error!");
}
}
}
编写 Python 脚本逆向
flag = ''
st = [131, 129, 148, 134, 140, 129, 135, 155, 138, 129, 150, 129, 191, 133, 129, 147, 153, 191, 133, 129, 147, 153, 157]
for i in range(0,len(st)):
for x in range(0,150):
temp = x + 64 ^ 0x20
if temp == st[i]:
flag += chr(x)
break
print(flag)
拿到 flag
四、[原九小时AK赛] 遗失的物品
打开靶场
下载文件是一个 apk
参考链接