前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >津门杯、红帽杯2021 Misc

津门杯、红帽杯2021 Misc

作者头像
回天
发布2023-04-25 15:54:47
7470
发布2023-04-25 15:54:47
举报
文章被收录于专栏:Ga1@xy's W0r1d

两个比赛撞到一天了,还好题量都不是很大,题目难度也不是特别高,不过质量也不是很高,但好歹也忙活了一天,最终以红帽第7,津门34(都去冲红帽了)的成绩收尾,也还算不错,在此简单记录下wp

津门杯

m0usb

最开始以为m0usb是个啥特殊的usb流量,结果放出了m1bmp才知道就是个题目序号:)

流量包里就是usb流量,内容也比较少,先提取出来

代码语言:javascript
复制
tshark -r usb.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

得到只有 1e 1f 21 25 27 这五种数据的流量,只有一字节的信息所以不可能是鼠标流量,而且坐标也不对,尝试按照键盘流量的方式来做

代码语言:javascript
复制
1e → 1
1f → 2
21 → 4
25 → 8
27 → 0

转换成只有 1 2 4 8 0 这五个数字的字符串,解云影密码

代码语言:javascript
复制
884 0 8 0 81 0 8821 0 81 0 8821 0 42 0 84 0 1 0 421
T H I S I S F L A G

得到flag

代码语言:javascript
复制
flag{THISISFLAG}

m1bmp

bmp隐写方式比较少,常见的就是LSB,直接zsteg一把梭了,再解个base64就是flag

代码语言:javascript
复制
flag{l5DGqF1pPzOb2LU919LMaBYS5B1G01FD}

tunnel

翻看流量包可以发现dns流量的域名都是一些奇怪的字符串

我们把第一个奇怪的域名复制出来丢进cyberchef,解base64后可以发现是zip的文件头

用tshark把域名信息过滤提取出来

代码语言:javascript
复制
tshark -r tunnel.pcap -T fields -e ip.src -e dns.qry.name -Y 'dns' | grep '192.168.1.103' | grep 'evil.im' > out.txt

再写个脚本还原压缩包,由于有部分丢包现象,所以要判断一下是否重复

代码语言:javascript
复制
import base64

f = open('out.txt', 'r').readlines()
f1 = open('flag.zip', 'w')
f2 = open('base.txt', 'w')

for i in range(len(f) - 1):
    if f[i] == f[i + 1]:
        continue
    a = f[i][14:].strip().replace('.evil.im', '')
    if len(a) % 4 == 2:
        a += '=='
    if len(a) % 4 == 3:
        a += '='
    #print a
    f2.write(a + '\n')
    f1.write(base64.b64decode(a))

a = 'QQAAAPs0AAAAAA=='    # 把最后一个补上
f2.write(a)
f1.write(base64.b64decode(a))
f1.close()
f2.close()

打开压缩包发现有密码,再结合一堆base64,想到base64隐写,脚本一把梭,得到压缩包密码

代码语言:javascript
复制
password: B@%MG"6FjbS8^c#r

解压得到flag(比赛公告中提到了本题的flag不带符号)

代码语言:javascript
复制
flag{D01nt_5pY_0nmE}

红帽杯

签到

txt打开是乱码,用010打开,复制十六进制,在线网站解一下

代码语言:javascript
复制
flag{we1c0me_t0_redhat2021}

colorful code

根据题目名可以想到一个有关颜色的编程语言(npiet),刚好不久之前的DASCTF三月赛也出过

data1中是数字0~19,共7067个,分解质因数为 37*191

data2中的数据仔细观察可以发现后面的数据都是有规律的填充,而在填充之前有60字节的数据

RGB三通道对应3个字节,总数60/3刚好对应20个数字,所以想到对应数字转换成颜色,先处理一下data2

代码语言:javascript
复制
000000 0000C0 00FFFF 00FF00 FFC0FF FFC0C0 C0C0FF C0C000 FF00FF FF0000 C00000 C000C0 FFFFFF FFFF00 FFFFC0 00C000 00C0C0 C0FFFF C0FFC0 0000FF

根据分解data1数字总长度唯一得到的长和宽画图

代码语言:javascript
复制
from PIL import Image

x = 37
y = 191
im = Image.new("RGB", (x, y))

f1 = open('data1', 'r').read().split(' ')
f2 = open('data2', 'r').read().split(' ')

flag1 = 0
for xx in range(0, x):
    for yy in range(0, y):
        rgb = f2[int(f1[flag1])]
        flag1 += 1
        r = rgb[0:2]
        g = rgb[2:4]
        b = rgb[4:6]
        im.putpixel((xx, yy), (int(r, 16), int(g, 16), int(b, 16)))
im.show()
im.save('out.png')

得到一张图

在线网站识别一下,得到flag

代码语言:javascript
复制
flag{88842f20-fb8c-45c9-ae8f-36135b6a0f11}

需要注意的是一定要保存为png格式,如果是jpg的话会进行有损压缩,无法准确识别到每个像素的信息,就无法得到flag

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 津门杯
    • m0usb
      • m1bmp
        • tunnel
        • 红帽杯
          • 签到
            • colorful code
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档