齐鲁师范学院2025级新生CTF网络安全练习平台 Week2 WriteUP

这一周侥幸AK了(感觉下一周很难了

Web

[WEEK2]时光回溯

1
2
3
4
出题人: Yime | 难度: 简单

有时候,过去留下的痕迹会在不经意间泄露秘密。
这个网站看起来一切正常,但你能让它“回到过去”,找出它曾经拥有的真正 Flag 吗?

使用githacker下载文件

image-20251020141559661

然后使用git命令查看历史提交即可

image-20251020141618889

[WEEK2]藏匿之处

1
2
3
4
5
6
7
题目信息 - [WEEK2]藏匿之处
出题人: Yime | 难度: 简单

这个网站看起来很普通,主页并没有什么特别的内容。
但你有没有想过,或许还有一些隐藏的地方等待被发现?
有些秘密藏在不易察觉的目录中,
不妨尝试用工具去探索那些被隐藏的路径吧。

使用dirsearch进行扫描

image-20251020143104889

解压www.zip 打开flag.html

image-20251020143126502

Pwn

[WEEK2]输出

1
2
3
4
题目信息 - [WEEK2]输出
出题人: Reinon | 难度: 基础

想要输出不给输出

分析代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int __fastcall main(int argc, const char **argv, const char **envp)
{
puts("########################################");
puts("# Welcome to the QLNU CTF #");
puts("########################################");
puts("# /\\_/\\ A tiny fox appears! #");
puts("# ( o.o ) Can you capture its art? #");
puts("# > ^ < #");
puts("########################################");
puts("# want output but it doesn't give output #");
puts("########################################");
close(1);
close(2);
system("/bin/sh");
return 0;
}
  • 关键操作
    • close(1):关闭标准输出(stdout)
    • close(2):关闭标准错误(stderr)

使用重定向 fd 0(stdin)到 stdout

1
exec >&0 2>&0

image-20251020143633728

查看flag即可

image-20251020143651641

Misc

[WEEK2]Scan

1
2
3
出题: Camille | 难度: 简单

面多加水,水多加面。For our first meeting, I will perform for you the act of sixteen rotations.

这道题其实不应该这么做的(AI实在写不出来脚本

image-20251022203839569

人肉眼看的 截出来这两款 再配合定位符

image-20251022203914447

image-20251022203921204

拼接二维码

image-20251022203933785

扫描二维码

image-20251022204004528

base64解码

image-20251022204026088

格式对了 再次解码即可

image-20251022204032595

[WEEK2]listing

1
2
3
出题人: Duktig | 难度: 简单

这段音频似乎藏着什么奇怪的电报声。你可能要看看什么东西……

看频谱图

image-20251023172202355

高的为1,低的为0,二进制,眼睛一点一点看的(

这道题是邪修出来的

1
2
3
01010001 01001100 01001110 01010101 01000011 01010100 01000110 01111011

01101100 01001001 01110011 01110100 01101001 01001110 01100111 01111101

image-20251023172231545

ASCII码转字符串 得到Flag

image-20251023172254962

[WEEK2]“真”加密

1
2
3
出题人: COLLAPSING | 难度: 简单

这是一个真加密的压缩包,你能将密码爆破出来吗?

文件有提示

image-20251021195636764

按照提示暴力破解即可

image-20251021195647583

得到Flag

image-20251021195657053

[WEEK2]心跳协议

1
2
3
4
5
6
7
题目信息 - [WEEK2]心跳协议
出题人: Merlyn | 难度:简单

网络安全工程师发现内部服务器存在异常ICMP流量,怀疑攻击者通过Ping请求传输了敏感数据。你能从抓包文件中找出隐藏的flag吗?

Tip:
关注Ping请求(Type=8)的数据字段

根据题目提示查看type为8的包

image-20251020144150736

发现每个包都有隐藏字符

image-20251020144217800

让AI写一个python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import pyshark
import sys

def extract_icmp_flag(pcap_file):
"""从ICMP Type=8数据包中提取最后一个字节并合并为FLAG"""
try:
# 读取pcap文件
cap = pyshark.FileCapture(pcap_file, display_filter='icmp.type == 8')

flag_chars = []

for packet in cap:
try:
# 获取ICMP层
icmp = packet.icmp

# 获取原始数据(十六进制格式)
if hasattr(icmp, 'data'):
icmp_data_hex = icmp.data

# 将十六进制字符串转换为字节
icmp_bytes = bytes.fromhex(icmp_data_hex.replace(':', ''))

if icmp_bytes:
# 获取最后一个字节
last_byte = icmp_bytes[-1]
flag_chars.append(chr(last_byte))
print(f"数据包 {packet.number}: 最后一个字节 = 0x{last_byte:02x} = '{chr(last_byte)}'")

except Exception as e:
print(f"处理数据包 {packet.number} 时出错: {e}")
continue

cap.close()

# 合并所有字符
flag = ''.join(flag_chars)
print(f"\n提取的FLAG: {flag}")
return flag

except Exception as e:
print(f"错误: {e}")
return None

if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python extract_icmp_flag.py <pcap文件>")
sys.exit(1)

pcap_file = sys.argv[1]
extract_icmp_flag(pcap_file)

得到Flag

image-20251020144255416