baby_jpg

文件下载

下载:https://nil0.lanzoum.com/iJ8Hd1695kcj 密码:3209

拿到文件 看到下⾯是个zip分离出来

是一个伪加密使用ZipCenOp.jar进行修复

解压得到 flag.txt 和 secret.pdf

提示 No flag here 放到binwalk查看一下pdf文件 可以看到有两个图

使用 foremost 对文件进行分离。

解析二维码的到

06dcb1040f09beba07323d02d94a7c7f207fed02a611504859b211c34da55ab3e6aca35c825d0dc0e99e5b6d87276550ed206f50bcfcbba71636cb66e862d5cd

放到txt文件中将后缀改为zip

使用brkcrack获取keys

rbkcrack.exe -C 1B426.zip -P sha512.zip -a

ed3fb6a9 1c4a7211 c07461ed

rbkcrack.exe -C 1B426.zip -c flag.txt -k ed3fb6a9 1c4a7211 c07461ed -d flag.txt

二分法

下载:https://nil0.lanzoum.com/in8lS16pe5qd 密码:5vo3

下载解压后是一个日志文件,内容是一些http请求的日志

将URL编码进行编译方便查看

搜索 flag 可以看到爆破 this_is_flag 字段的日志通过分析日志得到 flag,706 表示成功,722 表示失败.

最后得到 flag
flag{PhP_15_83ET}

RC4

下载:https://nil0.lanzoum.com/iZjD616pf1ti 密码:fhij

下载的到三个文件,分析task.py

task.py

import os
from secret import flag  # 导入待加密的数据

from Crypto.Cipher import ARC4  # 导入加密算法

def encrypt(msg, key):
    """
    对msg进行ARC4加密
    :param msg: 待加密的数据
    :param key: 加密所使用的密钥
    :return: 加密结果
    """
    rc4 = ARC4.new(key)
    return rc4.encrypt(msg)

key = os.urandom(16)  # 生成一个16字节的随机密钥
cipher = encrypt(flag, key)  # 对待加密的数据进行加密,生成密文

with open("key", "wb") as f:
    f.write(key)  # 将密钥写入名为key的二进制文件中

with open("ciphertext", "wb") as f:
    f.write(cipher)  # 将加密后的数据写入名为ciphertext的二进制文件中

解密代码

from Crypto.Cipher import ARC4  # 导入加密算法

# 从文件中读取密钥
with open("key", "rb") as f:
    key = f.read()

# 从文件中读取加密后的数据
with open("ciphertext", "rb") as f:
    ciphertext = f.read()

# 创建 ARC4 对象并使用密钥进行解密
rc4 = ARC4.new(key)
flag = rc4.decrypt(ciphertext)

# 打印解密结果
print(flag.decode())

反射密码

题目:使用仿射函数y=3x+9加密得到的密文为JYYHWVPIDCOZ,请尝试对其解密。flag为f1ag{大写明文}。

仿射解密函数:F(x) = a-1(x - b) (mod m),其中a-1是a在Zm群的乘法逆元,m是字母的数量。

def affine_decrypt(ciphertext, a, b):
    plaintext = ""
    m = 26
    a_inverse = mod_inverse(a, m)
    for char in ciphertext:
        if char.isalpha():
            # 将字符转换为大写字母,然后减去偏移量b
            y = (ord(char.upper()) - b - 65) % m
            # 使用解密公式计算字符位置
            x = (a_inverse * y) % m
            # 将字符位置转换为字母
            plaintext += chr(x + 65)
        else:
            plaintext += char
    return plaintext

def mod_inverse(a, m):
    """
    计算a在模m下的乘法逆元
    """
    for i in range(1, m):
        if (a * i) % m == 1:
            return i
    return None

# 测试
ciphertext = "JYYHWVPIDCOZ"
a = 3
b = 9
plaintext = affine_decrypt(ciphertext, a, b)
print("解密后的文本:", plaintext)

最后得到 flag
flag{AFFINECRYPTO}

最后修改:2023 年 08 月 28 日
如果觉得我的文章对你有用,请随意赞赏