文章总结: 本文分享六道CTF逆向刷题实战,涵盖异或加密、Base64编码、迷宫路径、Java逆向、UPX脱壳及Android逆向等方向,每题均提供完整解密脚本与flag获取思路,适合CTF初学者练习逆向分析基础技能,建议结合题目动手复现以巩固掌握。
综合评分: 75
文章分类: CTF,逆向分析,二进制安全
CTF:赛前准备逆向题目刷题
原创
小话安全
小话安全
小话安全
2026年9月21日 07:00
山东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
题目一:简单的异或
这段代码是一个典型的CTF 逆向题 flag 校验逻辑。它读取用户输入,检查长度是否为 33,然后对输入做一次“前缀异或”变换,最后与全局变量 global 中的 33 字节比较。
解密脚本
global=[102,10,107,12,119,38,79,46,64,17,120,13,90,59,85,17,112,25,70,31,118,34,77,35,68,14,103,6,104,15,71,50,79,0]flag=''for i in range(0,33): flag+=chr(global[i]^global[i-1])print(flag)#flag{QianQiuWanDai_YiTongJiangHu}
题目二:简单的BASE64
代码关键点
for ( j = 0; j < v11; ++j ) Destination[j] += j;
- 对
Destination数组中的每个字符进行变换
Destination[j] += j;
看到这行字符串就知道有base64
虽然代码很多实际上就是这两个操作
import base64
a = 'e3nifIH9b_C@n@dH'flag = ''for i in range(0, len(a)): flag += chr(ord(a[i]) - i)
print("中间结果:", flag) # 输出 e2lfbDB2ZV95b3V9
# 对中间结果进行 Base64 解密decoded = base64.b64decode(flag).decode()print("Base64 解密结果:", decoded) # 输出 {i_l0ve_you}
# 拼接成完整 flagprint("最终 flag: flag" + decoded)
题目三:简单的迷宫
看到字符串“*11110100001010000101111#”
行0: * 1 1 1 1行1: 0 1 0 0 0行2: 0 1 0 1 0行3: 0 0 0 1 0行4: 1 1 1 1 #
puts("1 up"); puts("2 down"); puts("3 left"); printf("4 right\n:");
猜测这是一道迷宫题
串起来就是
222441144222
这就是本题的flag
题目四:简单的java逆向
用java反编译工具打开
在 Java 中,+ 的优先级高于 ^,所以表达式:
int result = arr[i] + 64 ^ 0x20;
等价于
int result = (arr[i] + 64) ^ 0x20;
解密脚本
a=[180,136,137,147,191,137,147,191,148,136,133,191,134,140,129,135,191,65]flag=''for i in range(0,len(a)): flag+=chr(((a[i]^32)-64))print(flag)#This_is_the_flag_!
题目五:简单的加壳
打开程序发现有用的信息不多,使用UPX脱壳工具进行脱壳
直接得到了flag
题目六:简单的android逆向
用工具打开找到flag
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:小话安全 小话安全
小话安全《CTF:赛前准备逆向题目刷题》