BUUCTF-MISC(4)

201 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

[SWPU2019]Network

很考验知识面宽度的一个题。我们下载完附件。发现是一个txt,内容类似于

63
255
127
127
63

经过了解得知,这是TTL隐写。

IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1,当TTL为0的时候,该报文就会被丢弃。TTL所占的位数是8位,也就是0-255的范围,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发,远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据。

简单来说,我们如何进行解密。就是按规则先转二进制。

00 替换 63
01 替换 127
10 替换 191
11 替换 255

我们找个脚本转换一下

import binascii
f=open("attachment.txt","r")
f2=open("result.txt","wb")
num=''
res=''
for i in f:
    if int(i)==63:
        num+="00"
    if int(i)==127:
        num+="01"
    if int(i)==191:
        num+="10"
    if int(i)==255:
        num+="11"
for j in range(0,len(num),8):
    res += chr(int(num[j:j+8],2))#转换为字符
res = binascii.unhexlify(res)#unhexlify:从十六进制字符串返回二进制数据
f2.write(res)

得到的数据会发现是一个压缩包。我们保存一下打开。发现是很长的base编码。

脚本跑一下

import base64
f=open("flag.txt","r")
a=f.read()
print(f,a)
res=base64.b64decode(a)
while(1):
    res=base64.b64decode(res)
    print(res)

其实我感觉使用ciphey或者其他解码工具也应该可以,可能会比较麻烦吧。解出得到flag

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

[MRCTF2020]Hello_ misc

先用steg查看一下png图片的通道。

发现red通道处有一个PNG图片,我们将其保存,得知一个密钥。

!@#$%67*()-+

根据图片提示我们要分离文件。于是我们用binwalk命令分离出了一个压缩包。

得到一些奇怪的数字。

127,255,63,191,127,191

二进制格式只有八位二进制的前两位不同

用脚本将前两位提出来并且先转十进制,再转成字符串。

with open('out.txt') as a_file:
    content = [x.strip() for x in a_file.readlines()]
bins = []
for i in content:
    bins.append(bin(int(i))[2:].zfill(8)[:2])
stringBins = ''.join(bins)
num = 0
flag = ''
for i in range(int(len(stringBins)/8)):
    flag+=chr(int(stringBins[num:num+8],2))
    num+=8
 
print(flag)

我们得到解压密码

rar-passwd:0ac1fe6b77be5dbe

解压后发现是一个DOC文档,里面并没有什么重要信息,怀疑信息被隐藏了。

改字体颜色就可以发现隐藏的BASE编码。

这里用到了base64逐行解密来拼成flag(脑洞真大),直接找个脚本或自己手动都可以。

flag{He1Lo_mi5c~}

[RCTF2019]draw

考的很简单,只不过知识点比较新奇,所以记录一下。

解压后发现没见过的编码。

cs pu lt 90 fd 500 rt 90 pd fd 100 rt 90 repeat 18[fd 5 rt 10] lt 135 fd 50 lt 135 pu bk 100 pd setcolor pick [ red orange yellow green blue violet ] repeat 18[fd 5 rt 10] rt 90 fd 60 rt 90 bk 30 rt 90 fd 60 pu lt 90 fd 100 pd rt 90 fd 50 bk 50 setcolor pick [ red orange yellow green blue violet ] lt 90 fd 50 rt 90 fd 50 pu fd 50 pd fd 25 bk 50 fd 25 rt 90 fd 50 pu setcolor pick [ red orange yellow green blue violet ] fd 100 rt 90 fd 30 rt 45 pd fd 50 bk 50 rt 90 fd 50 bk 100 fd 50 rt 45 pu fd 50 lt 90 pd fd 50 bk 50 rt 90 setcolor pick [ red orange yellow green blue violet ] fd 50 pu lt 90 fd 100 pd fd 50 rt 90 fd 25 bk 25 lt 90 bk 25 rt 90 fd 25 setcolor pick [ red orange yellow green blue violet ] pu fd 25 lt 90 bk 30 pd rt 90 fd 25 pu fd 25 lt 90 pd fd 50 bk 25 rt 90 fd 25 lt 90 fd 25 bk 50 pu bk 100 lt 90 setcolor pick [ red orange yellow green blue violet ] fd 100 pd rt 90 arc 360 20 pu rt 90 fd 50 pd arc 360 15 pu fd 15 setcolor pick [ red orange yellow green blue violet ] lt 90 pd bk 50 lt 90 fd 25 pu home bk 100 lt 90 fd 100 pd arc 360 20 pu home

百度了一下,似乎是logo编程语言,我们找个网站放进去解码就可以。

www.calormen.com/jslogo/

flag{RCTF_HeyLogo}