NSSCTF_reverse_[SWPUCTF 2022 新生赛]base64——[HDCTF 2023]easy_re

目录

[SWPUCTF 2022 新生赛base64](#[SWPUCTF 2022 新生赛]base64)

[SWPUCTF 2021 新生赛简简单单的解密](#[SWPUCTF 2021 新生赛]简简单单的解密)

[WUSTCTF 2020level2](#[WUSTCTF 2020]level2)

[HUBUCTF 2022 新生赛simple_RE](#[HUBUCTF 2022 新生赛]simple_RE)

[HDCTF 2023easy_re](#[HDCTF 2023]easy_re)


SWPUCTF 2022 新生赛base64

用ida64打开然后shift+F12

找到一串base64,盲猜为flag

得到flag

NSSCTF{base_64_NTWQ4ZGDNC7N}


SWPUCTF 2021 新生赛简简单单的解密

python 复制代码
import base64,urllib.parse
key = "HereIsFlagggg"
flag = "xxxxxxxxxxxxxxxxxxx"

s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
res = []
i = j = 0
for s in flag:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    res.append(chr(ord(s) ^ k))
cipher = "".join(res)
crypt = (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))
enc = str(base64.b64decode(crypt),'utf-8')
enc = urllib.parse.quote(enc)
print(enc)
# enc = %C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA

看起来是一个 RC4 加密的变种,加密后的结果又经过了一层编码处理。

代码的逻辑是:

  1. key = "HereIsFlagggg" 初始化 RC4 的 S 盒

  2. flag 进行 RC4 加密

  3. 将加密结果 base64 编码,再 base64 解码(这一步似乎没有实际作用)

  4. 最后进行 URL 编码

要解密,我们需要逆向这个过程:

python 复制代码
import urllib.parse

enc = "%C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA"

# 1. URL解码得到原始密文字符串
cipher_str = urllib.parse.unquote(enc)

# 2. 将字符串转换为字节(这就是密文字节)
cipher_bytes = cipher_str.encode('latin-1')  # 使用 latin-1 保持字节不变

print(f"密文字节: {cipher_bytes}")

# 3. RC4解密
key = "HereIsFlagggg"
s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]

i = j = 0
flag_bytes = []
for b in cipher_bytes:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    flag_bytes.append(b ^ k)

flag = bytes(flag_bytes).decode('utf-8')
print(f"flag: {flag}")

运行后flag为

NSSCTF{REAL_EZ_RC4}


WUSTCTF 2020level2

首先我们用脱壳工具去壳(upx)

用ida64打开找到 where is it?点进去

ctrl+x进入找到flag

最后flag为

NSSCTF{Just_upx_-d}


HUBUCTF 2022 新生赛simple_RE

用Ex查一下发现是64位

用ida64

打开找到base64(换位的)并打开伪代码发现是base64疑惑

写脚本ing...

python 复制代码
import base64

# 自定义的 Base64 字符表
custom_charset = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD"
standard_charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

# 要解码的字符串
encoded_str = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8=="

# 创建翻译表
trans_table = str.maketrans(custom_charset, standard_charset)

# 将自定义编码转换为标准 Base64
standard_b64 = encoded_str.translate(trans_table)

# 解码
decoded_bytes = base64.b64decode(standard_b64)

print("解码结果:")
print(decoded_bytes.decode('utf-8', errors='ignore'))

运行后flag为

NSSCTF{a8d4347722800e72e34e1aba3fe914ae}


HDCTF 2023easy_re

有壳啊,用 upx 去一下壳

再用ida64打开找到一串·base64

解码后获得flag

最后flag为

HDCTF{Y0u_h@v2_/\/\@57er3d_7he_r3v3rs3}


总结

无😝

相关推荐
2601_9623004719 小时前
Python TensorFlow对比PyTorch_Python TensorFlow和PyTorch在机器学习中的差异
pytorch·python·深度学习·机器学习·tensorflow
承渊政道21 小时前
【Python编程—从入门到实践】(Python条件判断完全入门:从布尔表达式到列表中的if实战)
开发语言·python·pycharm·条件判断·布尔表达式
circuitsosk21 小时前
企业知识库 RAG 从 62% 到 91%:分块策略、混合检索与重排序的调优全记录
python·知识库问答·rag·面试项目·ai工程化·混合检索
烂蜻蜓1 天前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
2603_965148111 天前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
阿童木写作1 天前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
恒锐丰科技林技术员1 天前
SS6209 半桥驱动器:小型半桥电源方案的优选器件
经验分享·嵌入式硬件
cui_ruicheng1 天前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
circuitsosk1 天前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
shehuiyuelaiyuehao1 天前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法