第十届御网杯网络安全大赛WriteUp"

admin 2026-10-24 02:55:25 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image解题步骤

  1. 解压 image\_04.zip,获取 image\_04.png。
  2. 读取 PNG 结构,IEND 块后残留 64 字节数据,为隐写密文。
  3. 密文结构:4 字节填充 + 4 字节 seed + XOR 密文。
  4. 用 seed 初始化 LCG,生成随机数与密文异或,得到 Base62 字符串。
  5. Base62 转字节,UTF-8 解码得到 flag。

完整 EXP

#!/usr/bin/env python3
import argparse
import string
import struct
import zipfile
from pathlib import Path

# LCG参数
A = 1664525
C = 1013904223
MASK = 0xFFFFFFFF
# Base62字符集
B62 = string.digits + string.ascii_lowercase + string.ascii_uppercase

# 读取ZIP中的PNG
def get_png_data(zip_file: Path):
    with zipfile.ZipFile(zip_file, 'r') as zf:
        png_list = [n for n in zf.namelist() if n.lower().endswith('.png')]
        if not png_list:
            raise RuntimeError(\"No PNG inside archive\")
        target_name = png_list[0]
        return target_name, zf.read(target_name)

# 截取IEND块后的数据
def cut_after_iend(data: bytes) -> bytes:
    if not data.startswith(b'\\x89PNG\\r\
\\x1a\
'):
        raise RuntimeError(\"Not a valid PNG file\")
    offset = 8
    data_len = len(data)
    while offset + 8 <= data_len:
        chunk_len = struct.unpack('>I', data[offset:offset+4])[0]
        chunk_type = data[offset+4:offset+8]
        offset += 8 + chunk_len + 4
        if chunk_type == b'IEND':
            return data[offset:]
    raise RuntimeError(\"IEND chunk missing\")

# LCG解密
def lcg_decrypt(raw: bytes):
    if len(raw) < 8:
        raise RuntimeError(\"Trailer data too short\")
    seed = int.from_bytes(raw[4:8], 'big')
    cur = seed
    out = bytearray()
    for b in raw[8:]:
        cur = (A * cur + C) & MASK
        out.append(b ^ (cur & 0xFF))
    return seed, bytes(out)

# Base62解码
def b62_decode(s: str) -> bytes:
    num = 0
    for c in s:
        num = num * 62 + B62.index(c)
    byte_cnt = (num.bit_length() + 7) // 8
    return num.to_bytes(byte_cnt, 'big')

# 解析文件
def parse_file(zip_path: Path):
    png_name, png_buf = get_png_data(zip_path)
    tail = cut_after_iend(png_buf)
    seed, dec_buf = lcg_decrypt(tail)
    b62_str = dec_buf.rstrip(b'\\x00').decode('ascii')
    flag = b62_decode(b62_str).decode('utf-8')
    return {
        'zip_path': str(zip_path),
        'png_name': png_name,
        'png_size': len(png_buf),
        'tail_size': len(tail),
        'seed_hex': f\"0x{seed:08x}\",
        'b62_str': b62_str,
        'flag': flag
    }

# 扫描目标文件
def scan_targets(input_list: list[str]) -> list[Path]:
    if not input_list:
        input_list = [str(Path(__file__).parent.resolve())]
    paths = []
    for item in input_list:
        p = Path(item)
        if p.is_dir():
            paths += sorted(p.glob('*.zip'))
        else:
            paths.append(p)
    return paths

# 主运行
def run():
    parser = argparse.ArgumentParser()
    parser.add_argument('targets', nargs='*')
    args = parser.parse_args()
    file_list = scan_targets(args.targets)
    if not file_list:
        print(\"[!] No ZIP files found\")
        return
    for fp in file_list:
        try:
            res = parse_file(fp)
        except Exception as e:
            print(f\"[!] {fp}: {str(e)}\")
            continue
        print(f\"    Flag: {res['flag']}\
\")

if __name__ == \"__main__\":
    run()

关键截图

flag

flag{memory_dump_analysis}

19、签到题 - 损坏的压缩包|Base64 解码

题目:data.txt,内容为 Base64 字符串

考点:基础 Base64 解码

解题步骤

  1. 打开 data.txt,内容:a2Jzdg==。
  2. 直接 Base64 解码,得到 flag。

关键截图

flag

flag{kbsv}

    第十届御网杯网络安全大赛WriteUp" 网络安全文章

    第十届御网杯网络安全大赛WriteUp"

    本文详细记录了第十届御网杯网络安全大赛的解题过程,涵盖WEB和PWN两大方向。WEB部分包括前端数据伪造、PHP反序列化漏洞、目录穿越绕过、SSTI模板注入等实战技巧;PWN部分涉及栈溢出、ROP链构造、后门函数利用、Shellcode注入等二进制漏洞利用。文章提供了完整的漏洞分析、解题步骤和EXP代码,具有较高的技术参考价值。
    【Kaggle奖牌赛】AIAgentSecurity-Multi-StepToolAttacks关于AI智能体安全的红队挑战" 网络安全文章

    【Kaggle奖牌赛】AIAgentSecurity-Multi-StepToolAttacks关于AI智能体安全的红队挑战"

    本文介绍了Kaggle上由OpenAI、Google等机构联合举办的AIAgent安全竞赛,重点针对工具使用型AI智能体在多步交互中的安全风险进行红队测试。比赛要求参赛者编写攻击算法,在沙盒环境中探索数据泄露、破坏性写入等安全漏洞的触发路径。竞赛设置了丰厚奖金,旨在推动AI智能体安全研究的标准化和可复现性评估。
    于佳教授团队|青岛大学计算机科学技术学院博士生孙方圆在安全领域国际顶级会议NDSS2026发表论文" 网络安全文章

    于佳教授团队|青岛大学计算机科学技术学院博士生孙方圆在安全领域国际顶级会议NDSS2026发表论文"

    青岛大学博士生孙方圆的论文《PACS:Privacy-PreservingAttribute-DrivenCommunitySearchoverAttributedGraphs》被安全领域顶级会议NDSS2026接收。该研究针对云外包属性图社区搜索中的隐私泄露风险,提出PACS隐私保护框架,通过安全社区索引、随机化属性编码和同态加密技术,在保护图数据与用户查询隐私的同时实现高效精准搜索,其性能在真实数据集上接近毫秒级,可应用于隐私保护推荐系统、社交网络分析等场景。
    评论:0   参与:  0