[CTF][WP]Ciscn2024初赛

Misc

火锅链观光打卡

签到题没什么好说的,写题兑换flag

Power Trajectory Diagram

思路来源于大一的队友(不然真急眼了)
从index中猜测13位输入,并且在trace的深度图中可以看到确实有十三条类似于输入信号的内容

每条内容都会有缺失一条部分 也是功率波动的部分

手动读出缺失的Y轴坐标再根据inputs表读出内容

import numpy as np

ind = [35,41,87,138,162,212,275,307,346,388,438,476]
data = np.load('./input.npy')

for i in ind:
    print(data[i+1],end='')

得到flag{_ciscn_2024_}

Tough_DNS

数据流前部分01010的二进制串数量和长度是二倍关系,可以推测为二维码,写脚本导出

from scapy.all import rdpcap, DNSQR, DNS

def extract_dns_queries(pcap_file):
    # 读取 pcapng 文件
    packets = rdpcap(pcap_file)
    # 存储所有的 DNS Queries Names
    dns_queries = []

    # 遍历所有的数据包
    for packet in packets:
        # 检查数据包是否包含 DNS 层
        if packet.haslayer(DNS):
            dns_layer = packet[DNS]
            # 检查 DNS 请求
            if isinstance(dns_layer.qd, DNSQR):  # 确保有 DNS 查询请求存在
                dns_queries.append(dns_layer.qd.qname.decode('utf-8'))

    return dns_queries

# 指定你的 pcapng 文件路径
pcap_file = 'Tough_DNS.pcapng'
queries = extract_dns_queries(pcap_file)
print("Extracted DNS Queries:", queries)

每四个都会重复,去重做成二维码扫描得到一串密码

后续是txt类型的dns记录,对每个txt内容写脚本导出

from scapy.all import rdpcap, DNS, DNSQR, DNSRR

data=[]

def extract_txt_records(pcap_file):
    # 读取 pcapng 文件
    packets = rdpcap(pcap_file)
    # 存储所有的 TXT 记录内容
    txt_records = []

    # 遍历所有的数据包
    for packet in packets:
        # 检查数据包是否包含 DNS 层
        if packet.haslayer(DNS):
            dns_layer = packet[DNS]
            # 检查是否有回复记录
            if dns_layer.an:  # an is the answer field of DNS
                for i in range(dns_layer.ancount):
                    # 获取单个记录
                    record = dns_layer.an[i]
                    # 检查记录类型是否为 TXT
                    if isinstance(record, DNSRR) and record.type == 16:  # 16 is the type code for TXT records
                        txt_content = record.rdata
                        if isinstance(txt_content, bytes):
                            txt_records.append(txt_content.decode('utf-8', errors='ignore'))
                        elif isinstance(txt_content, list):
                            for entry in txt_content:
                                txt_records.append(entry.decode('utf-8', errors='ignore'))

    return txt_records

# 指定你的 pcapng 文件路径
pcap_file = 'Tough_DNS.pcapng'
txt_contents = extract_txt_records(pcap_file)
print("Extracted TXT Records:", txt_contents)

for i in txt_contents:
    print(i,end='')

观察得到的内容再与DNS请求分析可以看到是0x4500和0x6421交替发出请求,继续分离

for i in range(0,len(data),2):
    print(data[i],end="")

print("\n")

for i in range(1,len(data),2):
    print(data[i],end="")

明显一个压缩包(504b0304)和一个不知道是什么的文件,这里先保存压缩包并尝试用前面拿到的密码解开得到一个secrt.pgp,然后用题目给出的字符串反转再hex2str再反转得到私钥导入密码。。。(吐槽一下这个只能纯猜有点无语)

然后就是用密码导入密钥 密钥打开前面和压缩包混杂的文件得到flag

神秘文件

一个怨念很深的无语题目

Part1:

在附件元信息中,用exiftool可以导出

丢进赛博厨子得到part1: flag{e

Part2

ppt中附着的word,字体中隐藏取消隐藏文字 调整字体颜色字号得到凯撒

part2: 675efb

分析zip文件发现藏有宏

Part3

问GPT之后用olevba导出宏

olevba ./attachment.pptm

同样问gpt发现是rc4 赛博厨子一把梭了

part3: 3-34

Part4

直接解得到part4:6f-40

Part5

最后一页的注释可以看到N轮加密base64,随波逐流秒了

part5:5f-90d

Part6

缩小之后看到明文,base64

part6:d-2

Part7

zip打开找到一段rot13

part7:b3

Part8

手翻看到一段很让人在意的全拼中文单引号,跟随提示删除所有 B b 1 3,得到

Part9

第五张ppt可以看到一个盖住的图片,在zip中找到之后打开这图片底下得到

part9:deH

Part10

缩小看到注释 维吉尼亚解得到

Part10: 9}

连起来得到flag{e675efb3-346f-405f-90dd-222b387edee9}

盗版软件

打开exe得到一个R通道隐写文件的lenna 打开后得到一个.b 根据字符特征分析可能是base85,丢进厨子之后根据开头的8猜测是shellcode,直接丢进沙箱可以得到回连ip(写wp的时候懒得复现了)

通风机

没啥意思的一题,下载西门子下蛋软件(真的会下很多东西),无法正常打开,创建一个新的可以发现缺少文件头,补全后打开一顿翻可以找到flag

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇