题目附件:
1 | 通过百度网盘分享的文件:SHCTF |
shctf2023
[WEEK1]签到题
下载附件
base解密,赛博厨子一把梭
最后flag为
1 | flag{this_is_flag} |
[WEEK1]Jaeger lover
题目描述:do you know Pacific Rim?提示环太平洋
下载附件
010查看图片,发现末尾有base编码
base解密
翻译一下
看图片是环太平洋风暴赤红,直接搜索风暴赤红操作系统
得到答案:
1 | Tri-Sun Horizon Gate |
steghide隐写
1 | steghide extract -sf Typhoon.jpg -p "Tri-Sun Horizon Gate" |
得到压缩包密码:
1 | .*+#1Ao/aeS |
解压压缩包
一看图片就宽高有问题,宽高一把梭
得到key:
1 | K34-759183-191 |
outsecret隐写
最后flag为
1 | flag{A1l_boys_aRe_Jaeger_L0ver!!} |
[WEEK1]message
下载附件
pdu解码
最后flag为
1 | flag{ba978405-b1c8-847c-8e69-f62177e4c087} |
[WEEK1]也许需要一些py
题目描述:这flag怎么没大没小的捏
下载附件
010先看无后缀文件,发现是png文件,补全文件头
保存后再次查看图片
得到flag的md5值:63e62fbce22f2757f99eb7da179551d2
压缩包有提示:
1 | - .... .. ... .---- ... -.-- ----- ..- -.- . -.-- |
摩斯解码
得到压缩包密码:THIS1SY0UKEY
解压压缩包
根据题目要求改为小写:this1sy0ukey
写一个匹配字符爆破大小写碰撞脚本
exp:
1 | import hashlib |
运行得到flag
最后flag为
1 | flag{Png_AnD_md5_so_GReAt} |
[WEEK1]ez-misc
下载附件
查看文本文件内容
01转二维码
扫描二维码
得到压缩包密码:
1 | hit_k1sme4_4_fun |
解压压缩包得到无后缀文件,010查看无后缀文件
发现是压缩包,填加后缀.zip
发现提示有二进制01数字,二进制转字符串
Kali 有个字典叫 rockyou很出名,尝试字典爆破
得到压缩包密码:palomino
解压压缩包
词频统计
最后flag为
1 | flag{SHyk1sme4} |
[WEEK1]请对我使用社工吧
题目描述:k1sme4的朋友考到了一所在k1sme4家附近的大学,一天,k1sme4的朋友去了学校对面的商场玩,并给k1sme4拍了一张照片,你能找到他的学校吗?
flag格式:flag{xx省xx市xx区_xx大学}
下载附件
图片上一个qq号,在qq相册中看到一张b站的图片
查看k1sme4的b站
看到评论:黄河入海,k1sme4回家!!!!!
百度搜索黄河入海口得知是山东东营
图片上发现是在万达广场,百度搜索东营的万达广场
对面就是中国石油大学
最后flag为
1 | flag{山东省_东营市_东营区_中国石油大学} |
[WEEK1]可爱的派蒙捏
题目描述:派蒙藏了一些东西,你能找到他们吗
下载附件
binwalk试试
发现藏有压缩包
foremost提取
查看两个文本文件内容
文件对比
在线网址:https://text-compare.com/
最后flag为
1 | flag{4ebf327905288fca947a} |
[WEEK1]steganography
下载附件
使用010editor打开图片careful.jpg末尾有base64编码
base解码
得到一部分压缩包密码:
1 | 12ercs.....909jk |
查看careful1.jpg属性
得到第二部分压缩包密码:xqwed
组合得到压缩包密码:
1 | 12ercsxqwed909jk |
解压压缩包得到flag
最后flag为
1 | flag{4d72e4f3-4d4f-4969-bc8c-a2f6f7a4292c} |
[WEEK2]远在天边近在眼前
下载附件
linux解压压缩包得到flag
倒序
新学的方法:
exp:
1 | print(__import__('zipfile').ZipFile('yztb.zip', 'r') .infolist()[-1].filename.replace('/', '')[::-1]) |
最后flag为
1 | flag{TH15_l5_rE41ly_e45y_a1r1gH7?_a28415d80662} |
[WEEK2]可爱的洛琪希
题目描述:把你的详细信息都交出来!
下载附件,解压压缩包发现有密码
尝试伪加密
查看文本文件内容
base解码
保存图片,查看图片属性
010查看图片发现末尾有东西
hex解码+维吉尼亚解码
最后flag为
1 | flag{Roxy_daisuki!} |
[WEEK2]奇怪的screenshot
下载附件
一眼 CVE-2023-28303 Win11截图漏洞
https://github.com/frankthetank-music/Acropalypse-Multi-Tool
使用前需要安装两个模块
启动软件,点击恢复工具
选择win11类型
一通操作得到新图片
保存图片重新打开,看到是百家姓编码
百家姓解码
最后flag为
1 | flag{CVE-2023-28303-Win11-Snipping-t00l-is-n0t-Secure} |
[WEEK2]图片里的秘密
题目描述:盲僧能出水银鞋吗?
下载附件
binwalk试试
发现藏有rar压缩包,binwalk -e 提取
得到一张图片,根据题目提示猜测是盲水印
最后flag为
1 | flag{Blind_Water_Mark!} |
[WEEK2]表里的码
题目描述:细狗配粗人,j_0k3r配我 )
下载附件
根据题目描述猜测是excel文件,改后缀.xlsx打开,全选发现是29x29的格子
随机选择几个格子检查一下就可以发现有些格子的字体形式是加粗的,而有些未加粗
粗的涂黑,得到二维码
扫描二维码
最后flag为
1 | flag{j0k3r_1s_my_wif3} |
[WEEK2]喜帖街
题目描述:喜帖街里就得有“喜帖”,ok?
下载附件
查看音频频谱
得到key,steghide隐写
ook解码
最后flag为
1 | flag{w@v2txt_s0_Int3r3st1ng!} |
[WEEK3]ez_usb
下载附件
发现是usb流量
工具一把梭
得到两个东西
第一个:
1 | 526172211a0700cf907300000d000000008008002f507424943500200080002000000002a3021b4d577f06551d33080020080000666c61672e7478747CC34ada98dA7d0200f035680325f68663724792af0b91cE86c1b46ed4b180d5a8A7C626ADb5ceb2fF8CF24104c43d7b00400700 |
发现是rar文件
保存下来
第二个:
1 | adabb04a5e9a6c33 |
猜测是压缩包密码
解压压缩包,查看文本找到flag
最后flag为
1 | flag{c6bd1c7bcfef89ffbf59d86ccaf97d3c} |
[WEEK3]请再次对我使用社工吧
题目描述:很好的城市,很大的水域,很美的山,有山有水但没有海,爱来自山东。
你能找到我脚下这座山的名字吗?
flag格式:flag{xx省xx市/区xx市/区_xx山}
下载附件
键线索是图片中有一座类似烈士陵园,题目描述说是山东省的 那直接百度搜索山东省烈士陵园,搜到这个的时候感觉挺像
但百度地图发现旁边没有山
因为我是土生土长的泰安人,对一些新闻也比较了解,忽然就把思路转变会不会是我们新泰 的,之前看新闻报道,李林雨烈士,房浩烈士都荣归故里,带着猜测,百度地图新泰市革命 烈士陵园
发现附近是青云山 另一种思路,百度搜索房浩烈士
敖山指的是青云山
最后flag为
1 | flag{山东省_泰安市_新泰市_青云山} |
[WEEK3]做社工不如来签到
下载附件
内存取证,查看历史命令行
1 | vol.py -f /home/kali/Desktop/neicun/challenge.raw --profile=Win7SP1x64 cmdscan |
得到一串关键字符串
1 | flag{this_is_your_key_to_open_some_file} |
12345678作为vc容器挂载,密钥为flag{this_is_your_key_to_open_some_file}
查看挂载内容
fake_flag.txt
1 | flag{just_a_fake_flagggggggg~~~~~} |
对文件夹中的进行内容处理,观察到有564个1kb的txt且里面的字符串长度都是564,考虑序号和字符串的对应关系,提取n.txt中的字符串的第n个字符:
exp:
1 | import os |
运行得到
一眼zip文件啊,赛博厨子转换
解压压缩包得到
发现需要密码,提示为:username_hostname
查看系统用户名
1 | vol.py -f /home/kali/Desktop/neicun/challenge.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names" |
查看计算机名
1 | vol.py -f /home/kali/Desktop/neicun/challenge.raw --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName" |
得到压缩包密码
1 | SOGREATNAME_WIN-RRI9T9SN85D |
解压压缩包
得到提示结合cmdscan中存在在github上下载文件的操作,尝试在github搜索k1sme4,发现有一个encrypt.py
base58解密
对于较大的565.txt,使用file命令得到是ext3文件系统,使用mount挂载(里面东西没删干净,其实strings可以直接拿到密码):
1 | file 565.txt |
得到加密后的密文
1 | Decrypt it and use it to get the flag: |
一个加密的zip文件,根据zip文件名可知密码是ip,用以下命令:
1 | vol.py -f /home/kali/Desktop/neicun/challenge.raw --profile=Win7SP1x64 netscan |
用ip:192.168.137.133解压压缩包,得到一张png
得到一张png,无法正常打开,拖入010发现是每四个字节逆序
写脚本恢复:
exp:
1 | f1 = open('E:\\shegong\\ip\\keyyy.png', 'rb').read() |
运行得到
获得第二步加密的密钥:
1 | Xorrrrrrrrr_1s_s000000_fun |
密文为:
1 | \xfb"7 S:$y\xa9\xac\xd5\xf6\xae\x81^o\xda\x06 \xff\xaf9\xc7\x92 |
已知加密后的密文、加密方式和三组密钥,编写解密脚本:
exp:
1 | from Crypto.Cipher import Blowfish, CAST |
运行得到
用解得的明文作为密码再次挂载VC容器即可得到flag
最后flag为
1 | flag{so0000_e4sy_forensics_And_decrypt!!!!!} |
[WEEK3]尓纬玛
题目描述:恏渏怪哋②惟犸,芣確萣,侢看看,還湜恏渏怪
hint:no steganography
下载附件
扫描二维码发现不行
QRazyBox优先读纠错区,然而纠错区只有半个flag,完整flag在数据块里,涂掉纠错区,或者说涂掉错误的纠错区
就读正确的部分了
扫描二维码得到flag
最后flag为
1 | flag{QRcOde_has_many_kindS_of_secre7s_NOw_y0U_knoW_l_De3b4e} |
[WEEK3]strange data
题目描述:hint:
android data
adb shell getevent
https://www.kernel.org/doc/html/v4.14/input/event-codes.html
下载附件
查看文件
直接上脚本
exp:
1 | import re |
运行得到flag
最后flag为
1 | flag{miiii1_sm4rt_p3n_1s_So_Fun!} |
shctf2024
[Week1] 签到题
描述:
1 | 关注公众号 **山东汉任信息安全技术有限公司**回复 **SHCTF我又踏马来辣!** 得到`flag` |
最后flag为SHCTF{Welc0m3_t0_SHCTF2024}
[Week1]有WiFi干嘛不用呢?
题目描述:
1 | k1每次来陪睡都要连WiFi,请帮他获取该wifi密码。flag提交方式:SHCTF{WiFi密码}。 |
下载附件
查看may文件夹
把may中所有的数据提取出来做成字典
cat may/* > passwd.txt
删一下[]
aircrack-ng爆破
最后flag为flag{0TUMVxz0JrUSDxHG}
[Week1]真真假假_遮遮掩掩!
题目描述:
1 | 假的就是假的,真的就是真的,遮遮掩掩的有什么用! |
下载附件
伪加密
解压压缩包
密码提示:一眼掩码爆破
解压压缩包得到
最后flag为SHCTF{C0ngr@tu1at1ons_On_Mast3r1ng_mAsk_aTT@ck5!}
[Week1]拜师之旅①
题目描述:
1 | 一年一度的洛琪希美照大赏开始了,正好Nanian233下周要去拜师pngMaster, 参加入门考试. 就拿这个先练练手吧 |
下载附件
010查看文件
png文件,缺少文件头补上即可
保存打开文件
宽高一把梭
最后flag为SHCTF{ohhh_rooooxy!}
[Week1]Rasterizing Traffic
题目描述:
1 | Man! What can I say!!! |
下载附件
ctf-natA一把梭
查看图片
光栅
利用Raster-Terminator-main工具
需要修改下脚本内容,二维改为三维
z[:, i::x, :] = img[:, i::x, :]改为z[:, i::x] = img[:, i::x]
运行脚本
查看文件
最后flag为SHCTF{1111z_tr@ff1c_aNaLys13}
[Week1]Quarantine
题目描述:
1 | shenghuo2发来的文件被隔离了,也许通过一些取证技术可以在提取到的数据文件中发现什么信息....... |
下载附件
Windows defender的隔离文件,rc4解密
exp:
1 | #!/usr/bin/env python3 |
运行生成文件
010查看文件
base解密
保存为zip
利用rockyou字典爆破密码
解压压缩包
最后flag为SHCTF{NObody_d0_no4_1ov4_ttthe_Cute_shenghuo2}
[Week2] Schneider
题目描述:
1 | Use Schneider tool open the file and you will get the flag. |
下载附件
根据题面这个题想让我们找Schneider tool,Schneider是一家做工业软件的公司,旗下有产品EcoStruxure Operator Terminal Expert,这个软件导出的项目后缀恰好是.vxdz,那我们就下载这个软件打开附件即可
在UserGroup1找到Password,左上角ShowPassword即可
还有一种方法
利用src-2020-0010
exp:
1 | #!/usr/bin/env python3 |
python3运行
最后flag为SHCTF{ez_ICS_checkin_right?}
[Week2] 屁
题目描述:
1 | 什么,原来你也玩术力口!不过你别想偷走我的工程文件!我可是把分卷压缩的文件名打乱了,这次你想解压也解压不了! |
下载附件
分卷压缩的 ZIP 文件通常以 z01
、z02
等后缀来标记数据顺序,但题目中的文件名已被打乱。虽然数据总量不多,但直接进行全排列会有 3628800 种可能,计算量较大。然而,文件的头和尾都有特征,确定这两个部分后,排列组合的数量可以减少到 40320 种。
找到文件头以 PK
开头的文件,将其后缀改为 ZIP 打开,可以得到压缩文件的 「CRC」 和大小,这些信息可以用来判断是否解压成功。
还可以看到压缩方法采用 「Deflate」 算法 ,没有加密,这意味着「数据区」的文件数据可以直接使用 「zlib.decompress
」 进行解压。
最小的文件即为文件尾。
删除 ZIP 的文件头尾后,编写代码进行爆破
exp:
1 | import os |
成功解压后得到术力口工程文件
使用 Synthesizer V
打开
Synthesizer V 使用 ARPABET 作为音素标准,仔细查找可以找到一个字典 https://github.com/cmusphinx/sphinxtrain/blob/master/test/res/communicator.dic.cmu.full
1 | S.,H.,C.,T.,F.,Open Curly Bracket,B.,L.,four,C.,K.,Underscore,M.,Y.,seven,H.,colon,five,H.,four,N.,H.,three,Close Curly Bracket |
最后flag为SHCTF{BL4CK_MY7H:5H4NH3}
[Week2] 拜师之旅②
下载附件
题目描述玩了个谐音梗”挨打”(IDAT),使用tweakpng工具
可以发现实质是两张图片放到了一起,一张4995
为底 ,一张5185
为底
假flag的图片为前者优先显示,删掉对应的三个IDAT块
按F7预览,得到flag
最后flag为SHCTF{1t_is_@_lucky_idat}
[Week2] 弄假成真
下载附件
参考https://www.bilibili.com/video/BV1Au4m1g7vT/
运用QRazyBox
QRazyBox的Data Sequence Analysis的功能
首先是右下角 4 个码元组成的块 用鼠标左键轻点就能读到这个块的信息:
接着是上面那块
手撸
用 QRazyBox 自带的 Padding Bits Recovery 功能补上部分像素
通过 Reed-Solomon Decoder 还原出二维码所存数据
Base64解密
010查看文件
发现藏着png文件,分离
扫描二维码
base换表
最后flag为SHCTF{THis_F14GTHis_F14G}
[Week2] 遮遮掩掩?CCRC!
题目描述:
1 | 我说今天必须爆破出来, 熊说:不可 |
下载附件
crc爆破
exp:
1 | import zlib |
运行得到
与熊论道
最后flag为SHCTF{F0ll0w_TaFFy_m1@0_ThanK5_M1@0}
[Week3] The Secret of Tokenizer
题目描述:
1 | Easy chall...If you're confused, try to figure out what the chall title means |
下载附件
bkcrack明文攻击
ZIP已知明文攻击深入利用 - FreeBuf网络安全行业门户
#准备已知明文
echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > png_header
#攻击获得密钥
bkcrack.exe -C challenge.zip -c challenge/letstalktokens.png -p png_header
攻击修改压缩包密码
bkcrack.exe -C challenge.zip -k 390aeba0 029c2d16 8c38b960 -U new.zip good
解压压缩包得到
后面的otf文件丢到fontdrop网站查看,https://fontdrop.info/
在Data的description能看到密文
然后在搜索后加上看压缩包的那个png文件提示发现其实这个是文本经过GPT的tokenization之后形成的token,用处是让GPT更好的理解输入文本的语义,句法和语义,然后其实在github搜也能找到tiktoken这个模块(这里选用GPT3.5)然后直接写脚本解密,然后在这篇文章也有写
https://blog.csdn.net/sinat_37574187/article/details/131210574
exp:
1 | import tiktoken |
运行得到flag
最后flag为SHCTF{Oh_U_R_7h3_R3@L_LLM_Tok3n1z3rs_M4st3r!!!}
[Week3]拜师之旅③
题目描述:
1 | Nanian233成功解出了pngMaster的模拟题, 大师很是欣赏, "那么现在,开始入门考试吧" |
下载附件
png拿到使用zsteg可以看到藏了一个压缩包并且得到密码:#P@SSSSSSW0RD!!
foremost提取压缩包
解压压缩包
提取压缩包并解压得到2.png,放大可以观察到有很多像素点,并且在exif处得到提示:real_size=320*180
和原图刚好差12倍,使用脚本提取新图后得到flag
exp:
1 | from PIL import Image |
运行得到
最后flag为SHCTF{YOU_P@55_THe_Ex@m!}
[Week3]xor
题目描述:
1 | sorry, I delete the flag python xor.py rm -f xor.py flag |
下载附件
创建一个文件flag(/data/flag)
并写入flag字符串
然后创建/randomfile.py并执行:
1 | import random |
于是在/data/目录下得到了file0~file255这256个文件
再创建一个xor.py(/data/xor.py)
1 | from pwn import xor |
执行后得到了xor(/data/xor)
文件
题目描述给出了最后执行的两条命令:
1 | python xor.py |
于是形成了题目附件所展示的文件集合
exp:
1 | from pwn import xor |
运行得到
最后flag为SHCTF{Y0u_F!nd_Th3_F1@g}
[Week3]完
题目描述:
1 | 想对你说的话,都在歌词里了,怎么看到歌词呢?想想如果没有在线音乐软件那2000年是怎么听音乐的 |
下载附件
提示了2000,软件为foobar2000,导入进去
查看属性
注释是rabbit,后面发现key,010查看音频
rabbit解密
最后flag为SHCTF{h0pe_y0u_love_th1s_song_Of_Eason}
[Week4] 天命人
题目描述:
1 | 出题: J_0k3r |
下载附件
查看描述.txt
1 | flag格式为SHCTF{} |
打开流量文件
没思路,找到出题人博客翻到
找到脚本exp修改对应数
1 | def decode_hid_data(hex_string): |
[Week4]今日无事,勾栏听曲。
题目描述:
1 | 昨晚上在梦里和k1妹妹旅游去了,睡醒之后怅然若失,于是我把印象里的地点画了下来,请提交我们的旅游地点。提交格式SHCTF{MD5(旅游地点)}。 |
下载附件
music文件,根据文件名猜测是音频文件,但直接加后缀不行,因为这个是pcm原始数据,需要用audacity导入原始数据
打开发现音频可以正常播放
观察波形,放大发现有非常明显的高频(880)和低频(440),我们读取转01
exp:
1 | import numpy as np |
运行得到
01文本放进赛博厨子一把梭
保存为rar文件,打开意外错误
发现是2.9老版本的winrar进行压缩的,5.0及以上版本rar格式压缩算法不一样
参考:
010查看rar压缩包文件
HEAD_TYPE的字节是7A
,将其改成74
保存并打开
打开draw.txt
draw.txt由0123组成,0是空格,|
是1,-
是2,/
是3,\
是4,画图
exp:
1 | from PIL import Image, ImageDraw, ImageFont |
运行得到
发现是一座塔,一共七层,搜一下七层高塔
发现是西安大雁塔,md5加密一下
最后flag为SHCTF{21506a1b677c7254879d86bbec5b4ec9}
[Week4] 音频里怎么有一幅画?
题目描述:
1 | 出题: pjx1314 |
下载附件
查看deep.wav文件的属性,找到密码:MARETU
根据文件名猜测deepsound隐写
得到rar
010查看rar文件
发现这实际上是一个zip压缩包文件,删除 RAR!
字符,并将 KP
改为 PK
,然后运行 ZIP 模板
根据文件头信息,能发现文件名长度 frFileNameLength
的值被设置为 3,直接将其修改为 7。但只修改文件名长度会导致模板运行错误,并且运行结果也没有中心目录区,这说明数据区内容识别错误,我们还需要修改一个值。
同时调整 frCompressedSize
和 frFileNameLength
为 2236116
和 7
,然后重新运行 ZIP 模板。
在注释里,我们发现了零宽字符。将 010 Editor
拉到最下面也可以看到这些字符。通过 zwsp-steg 解密这些零宽字符。
zwsp-steg 解密这些零宽字符
Offdev.net - Zero-width space steganography javascript demo
解密后得到字符串Pass:Z3r0-W1D7H
,由于没有其他需要解密的地方,且压缩包无法正常解压,推测这就是压缩包的密码。
将数据区和目录区的加密标志位都改为 09
输入密码后,成功解压出 key.wav
文件
使用 AU 打开 key.wav
,查看频谱图。上方是 Aztec Code
,下方是被污染的汉信码。
扫描 Aztec Code 后得到时间:00:11:67
将 Aztec Code
反相,与下方的汉信码抵消,得到完整的汉信码。
由于官方wp写的比较简洁,我就为了让小白更容易理解操作我就写详细一点步骤
1.首先用audacity导入key.wav
2.分离立体声为单声道
3.选择上面的Aztec那个声道进行反相
4.选择全部声道进行混音并渲染到新轨道
查看新轨道的声道频谱
保存在桌面,用AU打开查看频谱
汉信码在线识别
得到提示:链接,内容介绍了 AI 生成可扫码图像,目前没什么用,回过头来查看flag.wav
使用 Audacity 导入 flag.wav
发现 flag.wav
的图片明显被污染,猜测污染源就是这两个码。根据 Aztec Code
的时间 00:11:67
,推测两个二维码音频的起点是 00:11:67
这一步我也说详细点
1.先导入key.wav和flag.wav
2.将key.wav拖到00:11:67,这一步需要先找大致位置
然后缩放拖到准确位置
3.分离立体声为单声道
4.将汉信码、flag其中一个声道进行反相
5.将汉信码和flag两个声道进行混音并渲染到新轨道
查看新轨道声道的频谱
结合汉信码的提示,推测这是 AI 绘画生成的二维码。在 GitHub 搜索关键词 AI QRcode
,找到一个暴力识别项目
使用LoveLy-QRCode爆破扫描二维码
最后flag为SHCTF{AI_4rt_1s_M4gica1}
注:
1 | 在这里感谢一下pjx1314师傅,没有他我对照官方wp复现不出来,是他一步步教我如何复现出来,pjx1314师傅出的两道题都颇有收获,一道分卷压缩,一道音频反相以及ai二维码 |
复现太不容易了,喵!