qctfweek1(misc)

1《关于我穿越到CTF的异世界这档事:序》

我是逆向手,这里顺带做点misc,可能有些菜

也是看到题就蒙了

看了官方wp才知道是base64隐写

什么是base64隐写

先说base64加密吧,base64是将3字节(3乘8位)变为(4*6位)

那么这就给了可乘之机

A的二进制为010000 01

这样base64加密为010000 01000000 000000 000000

对应base64表 Q Q = =

这里看第二个q我把010000改成011000其并不会影响base解密

而其多的那些就是隐写字符

当然我现在只会c语言,不会python,然后用了官方wp的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
import base64
def get_diff(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for i in range(len(s2)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return 0
def decode_base64_stego(file_path):
with open("yileina.txt", "rb") as file:
lines = file.readlines()
binary_str = ""
for line in lines:
stego = line.decode("utf-8").strip()
realtext = base64.b64encode(base64.b64decode(stego)).decode("utf-8")
diff = get_diff(stego, realtext) //接受差值
padding_count = stego.count('=')
if diff:
binary_str += bin(diff)[2:].zfill(padding_count * 2)
else:
binary_str += '0' * (padding_count * 2)

hidden_message = ''.join([chr(int(binary_str[i:i+8], 2)) for i in range(0, len(binary_str), 8)])
print("隐藏信息:", hidden_message)

if __name__ == "__main__":
decode_base64_stego("flag.txt")

with open(“yileina.txt”, “rb”) as file:中的”yileina.txt”(伊雷娜)要改成你的那个放到的文本

虽然不会写吧,但我大概说一下了逻辑

1 打开base64所在的文件,然后以而二进制形式只读(一行行)

2 计算隐写字符与正常base64加密的差值(base64隐写并不影响文件的base64解密)

3 转换为二进制串,并按8位分割还原为ascii码

4 得到隐写信息

wp1

?CTFmisc

接着看base8(编码位数为3)

用网站解失败了(直接改官方wp的代码,这里不知为什么直接粘贴总有错让ai修改一下就好了)

1
2
3
4
5
6
7
8
9
10
11
def base8_custom_decode(cipher_text, alphabet):
mapping = {ch: i for i, ch in enumerate(alphabet)}
bits = ''.join(f"{mapping[ch]:03b}" for ch in cipher_text if ch in mapping)
bytes_list = [int(bits[i:i+8], 2) for i in range(0, len(bits), 8) if len(bits[i:i+8]) == 8]
return bytes(bytes_list).decode(errors="ignore")

if __name__ == "__main__":
alphabet = "?CTFmisc" # 直接固定字母表
cipher = "Tsmssic?FT?ii?sFFi?iTimCTC?mcCmsTiTmmCCCFs?sCCiiTFTcmCmFTCscFicTTs?ciC?TFFTim?s?TTmsmCmFCmmiFCmsTFTimCCsFCmiTicTT?msFCTTTs?c??ssFCmi?mciCcT====="
result = base8_custom_decode(cipher, alphabet)
print("解密结果:", result)

得到ZmxhZ3tUaDNfUHIxbmMxcGwzXzBmX0Jhc2VfMXNfUzBfRXp6fQ==(典型base64加密,cyberchef直接用)

得到flag{Th3_Pr1nc1pl3_0f_Base_1s_S0_Ezz}

2**[Week1] 俱乐部之旅(1) - 邀请函**

wp3

一开始由于我将zip解压缩软件全删了,然后直接解压,见到要输入密码然后直接什么都不知到了,之后看官方wp,在描述中有掩码,由于我没有zip解压缩软件,然后就一直找不到描述,一开始才在题目描述中,现在看来还是太蠢了(后来用bandizip打开)

接着我了解了一下掩码爆破(知道部分密码?表示占位符)

c5im????是掩码,接下来爆破用archpr

得到口令c5im8467(一定要选所有可打印字符否则爆不出来)

接下来解开压缩包的密码发现什么,我正文呢,这是大概率是要更换字体颜色才显示正文

wp4

先看第一部分重要内容在注释,我一开始去文件夹中对文件右键找属性,但显然这是不对的,因为我什么都没找到

wp5

这才是正确操作

得到标准ASCII码使用‌7位二进制数‌表示字符(cyberchef启动)还有注释

wp6

flag{W0rd_5t3g_is_1z

不豪又是拼装

wp7

奥秘藏在正文中,XML为基础并以ZIP格式压缩的电子文件规范(关键)Office Open XML含.docx;.pptx;.xlsx

改名将docx改为zip,解压缩

wp8

一开始以为是加密,结果就是简单字符串,还是太菜了

得到&Welc0me_t0_th3_c5im_C1ub}

3不好有黑客

这是pcapng(packet Caputrue next generation),保存数据包的一种形式,有网络、硬件、操作系统等信息。(最近在备考期末,好久没打ctf了,现在手感冰凉,所以只做个misc),这明显是抓包,但是作为misc的菜鸟(我是路边夜),显然并不知道该怎么做就看到flag.zip

算了还是备考期末去了,等我考完再写

期末结束了也是回来学安全了

这是道流量分析题,先学了一下前置只是

其忘关上http协议,http本质上是明文传输这就很不安全,https才是加密的

在期末备考期间闲的没事是就翻大佬的blog,大佬没还是tql,距离大佬还是很远

先说流量分析吧,先要了解网络协议(tcp(3次握手4次告别),http协议(明文传输,要注意请求方式get(获取数据),udp(无连接,不可靠)),之后是wireshark软件的使用

wp9

直接找http协议的get请求

wp10

追踪http流,得到?CTF2025这很可能就是密码

wp11

这界面就可以看出来(上面是http请求,中间是http响应,下面就是数据)

上下翻动流这是乱码阿,一看就是显示的语言不对

直接转换为源代码,打开010editor,将最下面哪个是文本内容以导入到16进制文本中

wp12

注意ctrl+shirft+v(导入成源码)ctrl+v(导入成文本),之后再导入zip模板(因为原来就是flag.zip)

输入前面得到的密码

得到flag{Wireshark_1s_4wes0m3}