Week1-Misc杂项
Labyrinth
图片题,kali里file、strings、zsteg命令一顿梭,没有发现。只能用stegsolve工具了,查看各个通道的图片,在green plane 0、Red plane 0、Blue plane 0三个通道都能看到一张二维码。
用在线二维码扫描工具扫一下,结果都是一样的。
decompress(公开赛道)
解压得到decompressit.zip和passwd_regex_hint.txt,打开txt文件,里面有提示。
正则表达式,提示我们密码的格式是3个小写英文字母1个阿拉伯数字1个小写英文字母,根据这个格式生成密码字典。- import stringalpha = string.ascii_lowercasedigit = string.digitsres = []for i in alpha: for j in alpha: for k in alpha: for m in digit: for n in alpha: res.append(i+j+k+m+n)with open("password.txt", "w") as file: for passwd in res: file.write(passwd+"\n")
复制代码 进行字典爆破,得到密码为xtr4m。
解压,再把flag.zip.001解压得到flag.txt,拿到flag。
decompress(校内赛道)
解压得到16个文件,只需要bindzip打开flag.zip.001解压出flag.txt。
全部内容计算完md5后,套上flag即可。
flag{c6edaba55bac51875a215e2de11c35dd}
pleasingMusic
audacity打开音频,往后拉能看到明显的摩斯密码特征。
提取出来进行解密,是乱码。
./..-/---/.-.-/-.--.././.../.-./---/--/-.--../..--/.
奇怪了,看下题目描述,一首歌可以好听到正反都好听,将提取出来的摩斯密码倒一下再解密成功。
全部变为小写就是flag。
兑换码
根据题目描述,就可以猜到图片的长和宽和图片的crc校验值不符,需要修改宽高,放到kali里显示不出来也可以验证是这个问题。
先获得图片的crc校验值1c204acf。
利用脚本爆破正确的长款。- import structimport binasciiimport osm = open("./荣花与炎日之途.png", "rb").read()k = 0for i in range(5000): if k == 1: break for j in range(5000): c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + m[24:29] crc = binascii.crc32(c) & 0xffffffff if crc == 0x1c204acf: k = 1 print(hex(i), hex(j)) # 0xa00 0x4e9 break
复制代码 修改图片的长宽如下。
打开图片拿到flag。
Week1-Crypto 密码学
Base
经过16进制解码,base32解码,base64解码拿到flag。
Strange King
根据“抽锐刻 5 的皇帝”可以想到凯撒密码,“娶了个模,回到原点”说明有取模运算。再对照ksjr和flag之间的映射关系,每次的增量为2。编写脚本:- base = 5ciphertext = "ksjr{EcxvpdErSvcDgdgEzxqjql}"plaintext = ""for i in ciphertext: if i == "{" or i == "}": plaintext += i else: start = ord("A") if i.isupper() else ord("a") plaintext += chr((ord(i) - start - base) % 26 + start) base += 2print(plaintext) # flag{PleaseDoNotStopLearing}
复制代码 xor
异或的特性:ab=c,ac=b,b^c=a,知道这个就可以写脚本还原了。- from pwn import xorfrom Crypto.Util.number import bytes_to_long, long_to_bytesc1= 8091799978721254458294926060841c2= b';:\x1c1*\x10\x11u;'key = b'New_Star_CTF'flag_first = long_to_bytes(c1 ^ bytes_to_long(key))flag_end = xor(c2, key)print(flag_first+flag_end) # b'flag{0ops!_you_know_XOR!}'
复制代码如果没有pwn库,使用pip install pwn命令安装即可。
一眼秒了
最入门的rsa题目了,直接对n进行大素数分解,得到p和q,接下来就轻而易举了。(大素数分解可用在线网站或者yafu工具)
- from Crypto.Util.number import *from gmpy2 import *import binasciie = 65537c = 48757373363225981717076130816529380470563968650367175499612268073517990636849798038662283440350470812898424299904371831068541394247432423751879457624606194334196130444478878533092854342610288522236409554286954091860638388043037601371807379269588474814290382239910358697485110591812060488786552463208464541069p = 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956044421q = 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956045093phi_n = (p-1)*(q-1)d = gmpy2.invert(e, phi_n)m = powmod(c,d,p*q)print(long_to_bytes(m)) # b'flag{9cd4b35a-affc-422a-9862-58e1cc3ff8d2}'
复制代码 Week2-Misc杂项
Herta's Study
wireshark打开,导出http对象。
在upload.php里看到一串代码,是base64编码的,还原看一下。
传入的字符串先进行base64编码,然后对字符串中奇数位的字符进行rot13的转换。在多个文件中都可以看到base64编码的字符串,可以一个一个试,真正的字符串在horse.php%3fpayload=type%20f.txt中。- [/code][size=5]wireshark_checkin[/size]
- wireshark打开,导出http对象,flag就在flag.txt中。
- [align=center][img]https://img2024.cnblogs.com/blog/3369335/202507/3369335-20250701210213661-149020455.png[/img][/align]
- [size=5]wireshark_secret[/size]
- wireshark打开,导出http对象,flag就在secret.png中。
- [align=center][img]https://img2024.cnblogs.com/blog/3369335/202507/3369335-20250701210432097-461320843.png[/img][/align]
- [size=5]你也玩原神吗[/size]
- 下载得到gif文件,看的时候会看到有东西一闪而过,用stegsolve工具一帧帧查看,第37帧看到内容,保存下来。
- [align=center][img]https://img2024.cnblogs.com/blog/3369335/202507/3369335-20250701213544684-12312590.png[/img][/align]
- 根据题目关键字原神提瓦特文字搜索得到映射图片。
- [align=center][img]https://img2024.cnblogs.com/blog/3369335/202507/3369335-20250701213639771-590419844.png[/img][/align]
- 将图片里的文字进行翻译。
- 中间5行翻译出来,一堆垃圾,无用。
- [code]lorem ipsum dolor sit ametconsectetur adipiscing elitsed do eiusmod temporincididunt ut laborc ctdolorc magna aliqua quis
复制代码 左上角右上角左下角右下角还需要进行栅栏解密,右上角的是假flag,右下角是真的。
字里行间的秘密
key.txt用sublime工具打开,发现零宽字符,用零宽字符网站解密。
拿到隐藏文本,打开flag.docx文件,需要密码,将隐藏文本输入,打开。
直接全选,复制到sublime中拿到flag。
热心助人的小明同学
内存取证题需要用到volatility神器,kali系统或者windows系统都可以。
使用下述命令即可拿到登录密码。
故flag为flag{ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh}
用溯流仪见证伏特台风
看视频,大概5分50秒左右看到domain和其下方的内容,但是不清晰。
直接豆包搜索我需要2024年7月8日伏特台风II的威胁盟报告原文件,给出了以下两种途径。
访问中国国家计算机病毒应急处理中心官网,在首页就能看到2024年7月8日的报告。
打开报告放大就能看清了。
powerj7kmpzkdhjg4szvcxxgktgk36ezpjxvtosylrpey7svpmrjyuyd.onion
进行md5加密就能拿到flag。
flag{6c3ea51b6f9d4f5e}
Week3-Misc杂项
BGM 坏了吗?
Adudacity打开,查看频谱图,发现左声道是噪音,右声道有信息。
先分离成单声道。
选中下半部分,复制。
新建一个文件,将刚刚复制的粘贴进来。
然后“文件”->“导出”->“导出为WAV”.
最后使用dtfm工具识别即可拿到flag。
flag:flag{2024093020241103}
OSINT-MASTER
先查看task.txt,告知flag格式是航班号+照片拍摄时飞机经过的地级市,查看图片属性。
得到时间为2024年8月18日下午2点半,在看图片,放大能看到B-2419。
网上搜索B-2419,进入flightera的官网。
点击搜索,将飞机型号输入,随便选择两项中的一项。
查看2024年8月份的航班。
一直翻到8月18号,只有4个航班,但是满足下午2点半这个时间还在飞的只有MU5156这一航班。
剩下的就是找途径的地级市了。一开始我根据航线将其附近的地级市都试了一遍,结果都不对。下载航班管家,首页->航班动态,搜索MU5156,查看飞行成就。
找到了北京飞往上海的航线图,将中间的几个城市试一下,得到结果为济宁市。
故flag为:flag{MU5156_济宁市}
Week4-Misc杂项
Alt
键盘流量,用tshark命令提取数据。tshark -r keyboard.pcapng -T fields -e usbhid.data | sed '/^\s*$/d' > usbdata.txt得到数据。

利用python脚本还原。- normalKeys = {"04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i", "0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r", "16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y", "1d": "z", "1e": "1", "1f": "2", "20": "3", "21": "4", "22": "5", "23": "6", "24": "7", "25": "8", "26": "9", "27": "0", "28": "", "29": "", "2a": "", "2b": "\t", "2c": "", "2d": "-", "2e": "=", "2f": "[", "30": "]", "31": "\", "32": "", "33": ";", "34": "'", "35": "", "36": ",", "37": ".", "38": "/", "39": "", "3a": "", "3b": "", "3c": "", "3d": "", "3e": "", "3f": "", "40": "", "41": "", "42": "", "43": "", "44": "", "45": "", "59": "1", "5a": "2", "5b": "3", "5c": "4", "5d": "5", "5e": "6", "5f": "7", "60": "8", "61": "9", "62": "0", }shiftKeys = {"04": "A", "05": "B", "06": "C", "07": "D", "08": "E", "09": "F", "0a": "G", "0b": "H", "0c": "I", "0d": "J", "0e": "K", "0f": "L", "10": "M", "11": "N", "12": "O", "13": "P", "14": "Q", "15": "R", "16": "S", "17": "T", "18": "U", "19": "V", "1a": "W", "1b": "X", "1c": "Y", "1d": "Z", "1e": "!", "1f": "@", "20": "#", "21": "$", "22": "%", "23": "^", "24": "&", "25": "*", "26": "(", "27": ")", "28": "", "29": "", "2a": "", "2b": "\t", "2c": "", "2d": "_", "2e": "+", "2f": "{", "30": "}", "31": "|", "32": "", "33": """, "34": ":", "35": "", "36": "", "38": "?", "39": "", "3a": "", "3b": "", "3c": "", "3d": "", "3e": "", "3f": "", "40": "", "41": "", "42": "", "43": "", "44": "", "45": ""}file = open("usbdata.txt")res_usb_data = []for line in file.readlines(): if line[4:6] in normalKeys: res_usb_data.append(normalKeys[line[4:6]]) elif line[4:6] in shiftKeys: res_usb_data.append(shiftKeys[line[4:6]]) else: continueres = ""for i in res_usb_data: res += iprint(res) # 1021089710312338190304242796937327951191051161049597108116952164431383251439549539553111487979481119537239125
复制代码 看开头的几个数字,就知道是flag{,说明没找错。
一开始看到以为是要把其前面的一个字符删除,但是发现翻译过来很多都是非ASCII字符。然后结合题目名字ALT,才知道Alt 加数字键也能打印出字符。看了下中间的数字,分成了以下几部分:
10210897103123 => flag{
38190304242796937327=> 这段不知道怎么翻译,感觉都不太对
95119105116104959710811695=>_with_alt_
216443138325143 => tB7
95495395531114879794811195=>_15_5o0OO0o_
37239125=>w}
这题就这样吧,哪位大佬解出来了告知一下。
扫码领取 flag
四个压缩包格式的文件通过file命令可判断为png。
改后缀,但是在kali里打不开,全部都是CRC校验错误,用脚本还原。- import structimport binasciiimport osm = open("fla9.png", "rb").read()k = 0for i in range(5000): if k == 1: break for j in range(5000): c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + m[24:29] crc = binascii.crc32(c) & 0xffffffff if crc == 0xAD8705E1: # 每张图片的crc码 k = 1 print(hex(i), hex(j)) # 0xfa 0xfa break
复制代码 这四张图片的crc码都一致,将宽高都改为0xfa即可。
每个图片都是二维码的四分之一,拼完整如下。
扫描二维码没有内容,经过豆包查询知道这是阿兹特克码。
利用在线 AZTEC 二维码阅读器读取。
Week5-Misc杂项
zipmaster
解压得到5个加密文件,看到4个文件较小,可以使用crc值爆破出内容。- # 参数crc 为压缩包里面文件CRC32的值import itertoolsimport stringimport binasciidic = string.ascii_letters + string.digits + '+/=_!@#$%^&*'crc = 0x03c90238 # 填每个文件的crcfor secret_number in itertools.product(dic, repeat=3): secret_number = ''.join(secret_number) # 转换元组为字符串 encoded_s = secret_number.encode('utf-8') # 编码后的 s if binascii.crc32(encoded_s) & 0xffffffff == crc: print(secret_number) exit(0)# this_is_key!
复制代码 密码为this_is_key!,解压得到0721.zip和hint.txt。
提示是明文攻击,看到114514.zip中的hint.txt和0721.zip中的hint.txtcrc值一致,可以确认是明文攻击。
将解压出来的hint.txt使用bindzip压缩成一个新的压缩包,确保压缩方法一致。
使用Advanced Archive Password Recovery软件利用明文攻击。
如果长时间没有解出来,就停止,也能得到解压后的压缩包flag.zip。
这些文件都很大,是个压缩包炸弹,利用HxD打开,拉到最下面,可看到base64编码的字符串。
将中间的.去掉,解码。
看到504b0304就知道是个压缩包,将数据复制到HxD中保存为111.zip。
解压需要密码,又看到最后一句话what the fuck i can not see the passwdf4tj4oGMRuI=,对f4tj4oGMRuI=base64解码,全是不可见字符。
只能利用python脚本解压了。- import pyzipperimport base64# 加密的 ZIP 文件名zip_filename = "111.zip"# 解压到的目标文件夹extract_to = "."# 加密密码password = base64.b64decode('f4tj4oGMRuI=')with pyzipper.AESZipFile(zip_filename,'r') as zipf: zipf.pwd = password zipf.extractall(extract_to)
复制代码 解压得到Z1文件,用HxD打开拿到flag。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |