前言
记录📝一些自己复现的过程吧.
第15届全国大学生知识竞赛
比赛时间:5.29 11:00 - 5.29 19:00
比赛网址: https://ctf.ichunqiu.com/topic/2022dxs
misc
everlasting_night
照片文件尾多出了这个.
FB 3E FC E4 CE AC 2F 54 45 C7 AE 17 E3 E9 69 AB

用md5解密看看,得到ohhWh04m1

通过stegsolve照片隐写工具
发现alpha plane2通道有隐藏数据

查看数据为f78dcd383f1b574b

通过lsb隐写分离(工具🔧)之后用exiftool查看得知文件为zip压缩包(看文件📃头也可以)

查看压缩包内容,如何检查压缩包是否有错误,没错误就解压带上密码参数-P ohhWh04m1

查看文件类型,发现是PNG.
于是就先用pngcheck工具检查一下.
果然发现错误:invalid IHDR image dimensions (0x0)
我们知道是IHDR块存在问题,所以先去看看文件的十六进制转储 (Hex dump)
通过xxd命令并通过管道将其输入head,就一目了然了(通过010看也可以,这里方便演示)

现在,我们来分解一下信息.
89 50 4e 47 0d 0a 1a 0a:这可以识别为文件签名(文件头),这是UNIX系统用来识别文件类型的.00 00 00 0d:这是我们的IHDR长度.49 48 44 52:这是我们的块类型,在这种情况下指定IHDR.00 00 00 00: 这是我们的宽度,显然这是无效的.00 00 00 00: 这是我们的身高,显然这也是无效的.08: 这是我们的位深度.06: 这是我们的颜色类型00: 这是我们的压缩类型.00:这是我们的过滤器类型.00: 这是我们的区间类型.00 00 00 00: 这是我们的 CRC 校验和,显然它也是无效的.
现在我们还知道了 图像尺寸 以及 CRC 校验和 无效.
关于CRC 校验和有疑问?那我简单介绍一下吧.
CRC 校验和是基于块数据计算的,如果 IHDR 块有效,那么它的 CRC 校验和 将匹配 hexdump 中提供的CRC.
既然CRC 校验和无效,那么我们不能通过暴力破解 IHDR 块中可能的图像尺寸来修复损坏的 png 图像
观察后面的数据,我们可以将51之后的数据另存后缀为data的文件,用gimp打开.
调整宽度为352,即可得到我们的flag.

flag{607f41da-e849-4c0b-8867-1b3c74536cc4}
ez_usb
用Wireshark打开,发现存在键盘流量.


图中显示的HID Data就是我们的键盘输入数据.
我们先看看Source为2.8.1这个键盘数据.
通过命令1⃣️tshark -r usb.pcapng -Y "usb.src == \"2.8.1\"" -T fields -e usbhid.data | sed '/^\s*$/d' > usbdata.txt
或者2⃣️ tshark -r usb.pcapng -T fields -e usbhid.data | sed '/^\s*$/d' > usbdata.txt
(若显示的是 Leftover Capture Data,则用命令tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt#提取并去除空行)
注:-Y “usb.src == "2.8.1"“ 是过滤source为2.8.1的数据包
-T fields -e usbhid.data 是提取usbhid.data字段
-e usb.capdata 是提取usb.capdata字段
命令1⃣️可以过滤出Source为2.8.1的键盘输入数据.导出为usbdata.txt这个文件.
命令2⃣️则是将所有键盘输入数据导出来.
然后使用此脚本USB键盘流量.py.

(注:pythonT是我的一个虚拟python的替换,你们用python即可)
显然,output中前面一串是rar文件头,并发现有密码,先将它们dump到本地.

再看看Source为2.10.1这个键盘数据.
上述过程同理.得到 35c535765e50074a

根据测试这个是压缩包的密码.
从而得到 flag{20de17cc-d2c1-4b61-bebd-41159ed7172d}

不过除了这2个键盘流量,我还发现另外一个.

但可惜的是,什么信息都没有.

Crypto
签到电台
题目内容:豪密,是中国共产党和中国工农红军第一本无线电通讯密码的简称,由周恩来同志亲自编制,以周恩来党内化名“伍豪”命名,它是我党建立机要工作最早也是保密性能最强的一种密码,从二十世纪三十年代到全国解放,都始终未被破译。春秋GAME伽玛实验室团队通过对豪密的加密模式进行分析,并参考已有的文献资料,仿制豪密的加密方法,制作成一道题目,谨以此题致敬情报战线的先辈们。
请点击“下发赛题”,让我们一起穿越百年,追寻红色通信足迹。(关注“春秋伽玛”公众号,回复“签到电台”获取解题提示)
在“标准电码表”找“弼时安全到达了”所对应的7个电码,再跟“密码本”的前7*4个数字分别逐位进行“模十算法”(加不进位、减不借位),所得到的就是要发送的电码。
发送电码前先发送“s”启动,即按3个“.”,这个发送电报的过程可以使用抓包软件进行抓取,可方便输入电报。
(如果您还需要进一步的提示,可在本公众号输入“豪密剖析”获取。)
“弼时安全到达了”所对应的7个电码:
1732 2514 1344 0356 0451 6671 0055
28=7*4
模十算法示例:1732与6378得到7000
发包示例:/send?msg=s
你的任务
现在你拥有了一台模拟电报机,如果以标准电码表为底本,并结合给出的密码本,请使用该电报机通过豪密的加密方法与总部通讯,发送消息为“弼时安全到达了”。
通过以下脚本
1 | import requests as req |
即可得到flag
基于挑战码的双向认证 1 && 2
本题含有两个flag,请点击“下发赛题”,本题容器下发后的端口是ssh端口,ssh的账号密码均为:player;ssh登录上去可自行修改密码。请参考说明文档,获取flag,并在本题提交第一个获取到的flag。
通过find /| grep flag查找.
由于服务器上文件读取权限设置不当(755)
可以直接进入root目录下找到 cube-shell/instance/flag_server 下的 flag1.txt 和 flag2.txt
基于挑战码的双向认证 3
由于给出的服务器上,root用户使用了弱密码.
爆破root密码为toor,登录后找到flag在/root/cube-shell/instance/flag-server/flag2.txt
由于能力有限,暂写这么多吧.








