第一届大连东软信息学院“东软杯”网络安全CTF竞赛-官方 MISC ’s WriteUp
2022-7-20 00:19:1 Author: 猫因的安全(查看原文) 阅读量:55 收藏

为贯彻落实习近平总书记关于网络安全和信息化工作的一系列重要指示精神,延揽储备网信领域优秀人才,提升国家网络空间安全能力,加快攻防兼备创新人才培养步伐,进一步提升大学生的网络空间安全创新能力与实践能力,实现以赛促学、以赛促教、以赛促用。 

大连东软信息学院“东软杯”网络安全CTF竞赛 由大连市公安局作为指导单位、大连东软信息学院主办,网络安全工作室承办,大连东软信息学院网络与信息中心、计算机学院、软件学院,品牌发展部、微光网络工作室协办,品牌发展部与微光网络工作室提供设计支持,大连暗泉信息技术有限公司赞助支持。

出题战队:大连东软信息学院网络安全工作室

特约出题人: Processor

MISC

1 签到

难度 签到

复制给出的flag输入即可

2 range_download

难度 中等

flag{6095B134-5437-4B21-BE52-EDC46A276297}

0x01

分析dns流量,发现dns && ip.addr=1.1.1.1存在dns隧道数据,整理后得到base64:

cGFzc3dvcmQ6IG5zc195eWRzIQ==

解base64得到:

password: nss_yyds!

0x02

分析http流量,发现ip.addr==172.21.249.233存在http分段下载数据,每次按照请求头range要求只下载一个字节。

由于是random下载,所以需要按顺序整理,整理后可以得到一个加密的压缩包。

在整理过程中会发现缺失2349位字节,需要尝试对其进行修复。由于0x01中,我们得到了zip的密码,所以可以对该字节进行爆破,如果密码正确,则修复成功。

0x03

解开压缩包得到二维码,

扫描后得到:

5133687161454e534e6b394d4d325a7854475233566e6870626a42554e6a5a4a5645466c4e47786a62324e464d47705557464635546d6c536148565165564659645563774e327073515863324f5846555247314555564134555570706344686957444d336544684c596c4255556e6333636e687165486c756446413351577470566e4242526b6c4a5457316c515452754d555661636e4a7859556430566c4d3559557844656a4a35626c68334d6d5a4c51513d3d

ciphey分析得到flag:

ciphey "5133687161454e534e6b394d4d325a7854475233566e6870626a42554e6a5a4a5645466c4e47786a62324e464d47705557464635546d6c536148565165564659645563774e327073515863324f5846555247314555564134555570706344686957444d336544684c596c4255556e6333636e687165486c756446413351577470566e4242526b6c4a5457316c515452754d555661636e4a7859556430566c4d3559557844656a4a35626c68334d6d5a4c51513d3d" Possible plaintext: '5133687161454e534e6b394d4d325a7854475233566e6870626a42554e6a5a4a5645466c4e47786 a62324e464d47705557464635546d6c536148565165564659645563774e327073515863324f5846555247314555564134555 570706344686957444d336544684c596c4255556e6333636e687165486c756446413351577470566e4242526b6c4a5457316 c515452754d555661636e4a7859556430566c4d3559557844656a4a35626c68334d6d5a4c51513d3d' (y/N): Possible plaintext: '5133687161454v534v6y394w4w325z7854475233566v6870626z42554v6z5z4z5645466x4v47786 z62324v464w47705557464635546w6x536148565165564659645563774v327073515863324u5846555247314555564134555 570706344686957444w336544684x596x4255556v6333636v687165486x756446413351577470566v4242526y6x4z5457316 x515452754w555661636v4z7859556430566x4w3559557844656z4z35626x68334w6w5z4x51513w3w' (y/N): Possible plaintext: 'w3w31515x4z5w6w43386x62653z4z6564487559553w4x6650346559587z4v636166555w45725451 5x6137545z4x6y6252424v665074775153314644657x684561786v6363336v6555524x695x486445633w4447596864436070 755554314655554137425556485u423368515370723v477365546956465561565841635x6w64553646475550774w464v4232 6z68774v4x6645465z4z5z6v45524z6260786v6653325744587z523w4w493y6v435v4541617863315' (y/N): Possible plaintext: 'd3d31515c4a5d6d43386c62653a4a6564487559553d4c6650346559587a4e636166555d45725451 5c6137545a4c6b6252424e665074775153314644657c684561786e6363336e6555524c695c486445633d4447596864436070 755554314655554137425556485f423368515370723e477365546956465561565841635c6d64553646475550774d464e4232 6a68774e4c6645465a4a5a6e45524a6260786e6653325744587a523d4d493b6e435e4541617863315' (y/N): Possible plaintext: 'flag{6095B134-5437-4B21-BE52-EDC46A276297}' (y/N): y ╭────────────────────────────────────────────────────────────────╮
│ The plaintext is a Capture The Flag (CTF) Flag │
│ Formats used: │
│ hexadecimal │
│ base64 │
│ utf8 │
│ base62 │
│ base58_bitcoin │
│ base32 │
│ utf8Plaintext: "flag{6095B134-5437-4B21-BE52-EDC46A276297}" │ ╰────────────────────────────────────────────────────────────────╯

0x04

题目流量生成脚本:

import os
import time
import requests
import random

for i in "cG Fz c3 dv cm Q6 IG 5z c1 95 eW Rz IQ ==".split(" "):
os.system("nslookup " + i+".nss.neusoft.edu.cn 1.1.1.1")

time.sleep(5)

l = int(requests.head("http://172.21.249.233/flag.7z", stream=True).headers["Content-Length"])
a = set()
while len(a) != l:
b = random.randint(0, l)
r = requests.get("http://172.21.249.233/flag.7z", stream=True, headers={"Range": "bytes=" + str(b) + "-" + str(b)})
if r.status_code == 416:
print(b)
a.add(b)
print(len(a))

3 只是个PNG,别想太多了.png

难度 签到

flag:flag{zhe_ti_mu_ye_tai_bt_le_XD}

本题考察的是对PNG结构以及常见工具的使用。

题目只是在IDAT数据当中存储了多余的zlib数据流

通过binwalk可以直接进行解压缩。

binwalk -Me PNG.png

4 png被打得很惨,现在卷土从来

难度 难

flag:

flag{zheshirenchude}

本题考察的是对PNG结构以及常见出题点的了解程度

打开题目是PNG图片,binwalk无异常


010editor打开发现crc异常,结构暂时没啥问题。


tweakpng打开发现,IHDR,IDAT,IEND数据块的CRC值均不对。


之后用StegSolve查看,发现图片有隐藏的框。

框选出了IDAT data,说明IDAT数据应该有特殊之处需要查看。


图片本身的信息就这么多,从PNG结构来一点点看,首先IHDR区块CRC有问题,一般说明是图片高度被修改

通过CRC反计算脚本(或者直接修改高度值盲试)发现图片下面有隐藏图像。

stegSolve查看,发现有隐藏图案


三个框分别圈出了png图片的一些数据结构,第二个框显示png图像数据使用zlib方式压缩。框选此处说明需要注意zlib压缩数据。

第三个框是具体压缩块数据结构。

此图片内容为libpng官网文档截图,但是实际访问官网,可发现标注的压缩块结构标注并不符合。

数字被故意修改过,所以可知2233这串数字应该为题目的某个key或者hint。

之后所有的IDAT数据块CRC值均不正确。

将所有CRC值拷贝下来。hex解码。发现是hint

hintis[IEND_and_11]_jiayou_XD.

根据hint查看IEND,正常IEND数据应为空,仅作为文件结束标志。

但是现在却有数据。

提取数据,发现前四位为9C 78,而zlib数据头为78 9C。

修改前四位进行解压。发现是base64,之后进行解码。

最后得出flag第一段

flag{zheshi

得到第一段之后,hint里面的11,还没有解决。通过查看发现chunk 11,是最后一个IDAT数据块。

根据之前还有一个hint 2233,全数据块搜索2233。发现数据块末尾含有2233,仅此一个

根据前一段flag,猜测此处也是zlib压缩,将从2233开头到CRC值之前的32个HEX值复制,修改2233为zlib数据头78 9C

发现解码完数据为一种编码,根据前一段flag来猜测,此处应该是其他base家族类的编码。

通过basecrack或者在线base解码,可得知此为base91,解码为renchude}

后一段flag为:

renchude}

合并两段,得到最终flag

flag{zheshirenchude}

5 在哪呢

难度 简单

查看PDF

在文字中发现多处颜色越来越淡的提示

想到flag可能被以白色隐藏到文字中

全选文字 发现倒数第二段段尾有一段空白字

复制出来或编辑为其它颜色

得到flag

flag{hey_there_is_no_thing}

6 ecryptedzip

难度:难

本题考察的是对明文攻击的实战应用 在实际环境中不会主动提供明文文件用于明文攻击 需要自己寻找明文文件或部分明文进行攻击 压缩包内含有两个文件LICENSE和README.md

LICENSE为开源证书文件

将常⻅开源协议全下载下来 对比大小

发现Apache 2.0大小极为相近

使用github 内置的LICENSE文件可以成功解密

还有一种简单的方法 开源许可证很多都是空格开头 可以直接使用多个重复空格作为明文

7 easysteg

难度 简单

可以看到一个缺少定位符的二维码,补全后拿到提示:一种常见的隐写

分离图片拿到压缩包

解压后配合观察图片名称格式,使用stegpy拿到flag

flag{Do_U_Kn0w_Ste9py??}

8 压缩包压缩包压缩包

难度 简单

第一层为50996.zip

写脚本解密递归压缩包 300层

解题脚本

mkdir zips
mkdir zips/files
mv 50996.zip ./zips
cd zips

while :
do
file=$(ls -t | tail -1)
pass=$(zipinfo $file | grep - | cut -d ' ' -f12 | cut -d . -f1)
unzip -P $pass $file
echo "unzip -P $pass $file"
mv $file ./files
done

最后一层为23333.zip 6位数字密码为756698

打开sqlite在employees表中找到flag

flag{Unz1p_i5_So_C00l##}

文章转载自先知社区:https://xz.aliyun.com/t/10642


文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0NjMyNDcxMg==&mid=2247494832&idx=1&sn=b4e4be45626039cbb95593f49e84c743&chksm=c3057937f472f0213c7ffa6d9e92116b6e6e9c882439b0b3ed3fd060adc63009f1fb3b77e472#rd
如有侵权请联系:admin#unsafe.sh