2024数信杯北区决赛实操
2024数信杯北区决赛实操
本次比赛北区决赛第三名 学生组第一
ez_sign
先爆破出密码123456
打开看到jpg中的flag1
flag{266c7354-0817
流量包中找到flag2
-4694-9494-
给了一个part3.zip 无法正常解压 010打开查看 发现有大量FF 写个脚本和0xFF异或
with open("part3.zip", 'rb') as f:
data = f.read()
xor_data = bytearray(d ^ 0xFF for d in data)
with open("1.zip", 'wb') as f:
f.write(xor_data)
正常解压压缩包 得到flag3
flag{266c7354-0817-4694-9494-c727479d8f1a}
其实上面异或这一步直接在010editor里面进行也可以 记得选择无符号字节
也可以直接在赛博厨子中进行 先解hex 在进行异或
签到寄语
随便写
写完用CameraFileCopy扫码 得到文件
Secret1
小强离开电脑的时候,某人把小强的秘密给偷走了,还把文件修改覆盖了,作案脚本也删了。请帮助小强找到丢失的相关数据。
1.提交加密算法工具当中的flag值。(提交示例:flag{*})
使用r-studio打开内存镜像 在secret文件夹下面有个pyc文件 保存出来 打开就有flag
secret2
2.恢复图片中的flag值
把上面的pyc文件代码逆出来
def encode(png):
flag = "flag{eba771fd-2b03-418f-b11a-60f1141c99ee}"
lens = len(flag)
with open(png, "rb") as f:
pic_bytes = f.read()
print(len(pic_bytes))
output_bytes = bytearray()
for i in range(0, len(pic_bytes)):
output_bytes.append(pic_bytes[i] ^ ord(flag[i * 2 % lens]))
with open(png, "wb") as f:
f.write(output_bytes)
filescan出来一个flag.png 保存出来 这就是被加密的图片 ai跑个脚本恢复出原图片
def decode(png):
flag = "flag{eba771fd-2b03-418f-b11a-60f1141c99ee}"
lens = len(flag)
with open(png, "rb") as f:
enc_bytes = f.read()
output_bytes = bytearray()
for i in range(len(enc_bytes)):
output_bytes.append(enc_bytes[i] ^ ord(flag[i * 2 % lens]))
with open("decoded_" + png, "wb") as f:
f.write(output_bytes)
# 使用解密函数
decode("flag.png")
secret3(赛后复盘)
3.提交压缩包当中的flag值。
也算是学到了 一个很不常见的插件使用方式
压缩包在上一题恢复出来的图片尾部 提取出来之后 确定为真加密 开始找密码
密码在剪切板中
剪贴板插件后面加上-v参数 因为可能在明文之间有不可见字符进行隔断 这个时候仅使用clipboard就可能看不到全部明文
clipboard -v
下图是加不加-v参数的对比
拿到密码后 解压压缩包出flag
history1
r-studio里面找到两个ipynb文件
使用vol导出
.\volatility.exe -f F:\history\history_91c3e27c00d70d4d6982952b60a4bb51\data.raw --profile=Win7SP1x64 filescan | findstr ".ipynb" ─╯
Volatility Foundation Volatility Framework 2.6
0x000000007d843bd0 16 0 -W-rw- \Device\HarddiskVolume1\Users\ctf\Anaconda3\etc\fish\conda\.ipynb_checkpoints\Untitled-checkpoint.ipynb
0x000000007da54b40 16 0 R--rw- \Device\HarddiskVolume1\Users\ctf\Anaconda3\etc\fish\conda\Untitled.ipynb
.\volatility.exe -f F:\history\history_91c3e27c00d70d4d6982952b60a4bb51\data.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007d843bd0 -D E:\Desktop\数信杯\history ─╯
Volatility Foundation Volatility Framework 2.6
DataSectionObject 0x7d843bd0 None \Device\HarddiskVolume1\Users\ctf\Anaconda3\etc\fish\conda\.ipynb_checkpoints\Untitled-checkpoint.ipynb
.\volatility.exe -f F:\history\history_91c3e27c00d70d4d6982952b60a4bb51\data.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007da54b40 -D E:\Desktop\数信杯\history ─╯
Volatility Foundation Volatility Framework 2.6
DataSectionObject 0x7da54b40 None \Device\HarddiskVolume1\Users\ctf\Anaconda3\etc\fish\conda\Untitled.ipynb
打开就是flag
history2
同上题
Pixel
首先看到文件头提示SM4CBC sm4国密算法 CBC模式 修改为png头后 正常打开图片
尾部有密文
存在lsb隐写 先得到key
注意这个地方是1
不是l
(踩大坑)
zsteg得到iv
直接解密
水印攻击_北区(990分)
gpt调
from PIL import Image, ImageEnhance
import numpy as np
# 打开原始图片
image_path = "input.png"
image = Image.open(image_path)
# 1. 轻微调整亮度
def adjust_brightness(image, factor=1.05):
enhancer = ImageEnhance.Brightness(image)
return enhancer.enhance(factor)
# 2. 添加轻微的高斯噪声
def add_noise(image, mean=0, var=0.001):
img_array = np.asarray(image)
row, col, ch = img_array.shape
sigma = 0.0003
gauss = np.random.normal(mean, sigma, (row, col, ch))
noisy_img = img_array + gauss * 255
noisy_img = np.clip(noisy_img, 0, 255).astype(np.uint8)
return Image.fromarray(noisy_img)
# 3. 叠加轻微的掩码块
def add_mask_block(image, block_size=5, opacity=0.1):
img_array = np.array(image)
mask = np.zeros_like(img_array)
h, w, _ = img_array.shape
start_h = np.random.randint(0, h - block_size)
start_w = np.random.randint(0, w - block_size)
mask[start_h:start_h + block_size, start_w:start_w + block_size] = (255, 255, 255)
final_img = (1 - opacity) * img_array + opacity * mask
final_img = np.clip(final_img, 0, 255).astype(np.uint8)
return Image.fromarray(final_img)
# 应用以上步骤对图像进行处理
image = adjust_brightness(image, factor=1.1) # 轻微提高亮度
image = add_noise(image, mean=0, var=0.0005) # 添加轻微噪声
# 保存处理后的图片
image.save("result.png")
Ezsql
联合注入 先闭合前面的sql查询语句 后面根据题目描述 查询whatisthis表中的flag
name=1') union all select 1,flag,3 FROM whatisthis--+
easy-decode
对main函数计算md5,动调有问题,不同工具结果都不同,比较新颖的反调试
idapython直接算
import hashlib
import ida_bytes
# 指定的起始地址(替换为有效的起始地址)
start_addr = 0x7FF721E11000
# 要读取的长度
length = 0x7D0
# 读取字节数据
byte_values = [ida_bytes.get_byte(start_addr + i) for i in range(length)]
# 将字节数组转换为字节串(bytes)
byte_data = bytes(byte_values)
# 计算MD5哈希值
md5_hash = hashlib.md5(byteS_data).hexdigest()
# 打印MD5哈希值
print("MD5:", md5_hash)
厨子解aes,iv全零
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 w3nx1z1!
评论