MISC攻防世界

Cat_Jump

下载附件打开:

把他丢进010编辑器里

查找CATCTF

得到flag:CatCTF{EFI_1sv3ry_funn9}

4433

下载附件打开:是一张图片

将他丢进winhex搜索flag啥也没有

使用kali binwalk看看图片发现没啥

使用steglove打开改变颜色发现下面一个二维码

使用QR Research扫描

得到一串摩斯密码:...--.----...--..

注意题目4433

摩斯密码解密

得到:VYGUD

在摩斯电码中存在一些常用的缩写,VY 代表 VERY,GUD 代表 GOOD,所以正确的flag是 VERYGOOD

查了下
这在摩斯电码里是verygood

得到flag:flag{VERYGOOD}

侧信道初探

下载附件打开有两张图片

根据题意,每个循环中或者执行if内语句,或者不执行。不执行的情况下消耗能量较少,执行的情况下消耗能量较多,需要时间也更长。因此每两条密集带中间的稀疏带宽度如果较短,代表0,如果较长,代表1。也即:

flag:SCTF{0110111010}

pyHAHA

下载附件:是一个pyc文件

拿到一个pyc

反编译

结果显示反编译不成功

猜测是pyc隐写

报错

扔进winhex

发现有压缩文件
且倒序了

f = open('PyHaHa2.pyc','wb')
with open('PyHaHa.pyc','rb') as g:
	f.write(g.read()[::-1])
f.close()

正序后
发现少文件头03F30D0A
补上

在末尾发现

flag1: ec8d57d820ad8c586e4be0122b442c871a3d71cd8036c45083d860caf1793ddc

flag2: c40a0be335babcfbd8c47aa771f6a2ceca2c8638caa5924da58286d2a942697e

foremost分离
得到一个压缩包
里面有一个mp3

解压要密码
看了下
伪加密
图示部分改为0008

解压得到mp3

在备注里有key

163 key(Don't modify):L64FU3W4YxX3ZFTmbZ+8/dx5jBNDPdsKv9gAgXYyj0/Z0Vl4ORaCLH5D0oN9v9nBBv6zxpBucgNeE2qqke4ugZs7dxriT5lfUpulX5PYMzSg2pqL6APTHQjtIHw16ZCRTMBBkInrUGSTklA2MwPLGkuDTmWfzjHqDWEK5LLRP6oiOXe0JeI9mLHzL2nm6T3/ianaPEzeH7lpE/ciWDyqFUXoTZWeyK0xTjYxBSj9RJFoaoIxmXk6P8MJq+EvcS7ratByRUvWLaUFhcXhJ1iRK58BKcVPS0hxkzA77WB1UnrUfpkS1U/F5uYmYWGZ3Cz2fTvJHcsE228LUnnybaoIoDyY6BvZVUitmA+VhhTHoIKsREyCzC3VXq/HuwwuHdCdftzXJpXPoJSNzWAZH0oGnF+WE7m5Fqd36dqp2srL5bgFjFnyZzIkxdaU+ZW+Rm7aIbrb7nK2Pp9iequOBV6rnKeHZyc3hzG4lVVapoXl/U2cvfVgIqVtnuJE4XM4NuUd

扔进audacity

无果

查了下

有个工具DeEgger Embedder

得到一堆base32

回头看看那个处理好的pyc
反编译得到

import base64

def get_base32_diff_value(stego_line, normal_line):
    base32chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    for i in range(len(normal_line)):
        if stego_line[i] != normal_line[i]:
            return abs(base32chars.index(chr(stego_line[i]))-base32chars.index(chr(normal_line[i])))
    return 0

# base32 隐写解密
def base32stego_decode(lines):
    res = ''
    for i in lines:
        stego_line = i.strip()
        normal_line = base64.b32encode(base64.b32decode(i.strip()))
        diff = get_base32_diff_value(stego_line, normal_line)
        if '=' not in str(stego_line):
            continue
        if diff:
            res += bin(diff)[2:]
        else:
            res += '0'
    return res

with open("Dream It Possible - extracted.txt", 'rb') as f:
    file_lines = f.readlines()
en=open("encrypt.txt","w")
en.write(base32stego_decode(file_lines))
en.close()

得到encrypt

猜测是字符转图片

from PIL import Image

str=open("data.txt","r").read()
length=240
width=30
pic=Image.new("RGB",(length,width))
i=0
for x in range(length):
	for y in range(width):
		if str[i] == '0':
			pic.putpixel([x,y],(0,0,0))
		else:
			pic.putpixel([x,y],(255,255,255))
		i += 1
pic.show()
pic.save("Fl4g.png")

得到flag

传感器2

题目描述

推测温度传感器解码后报文第一个字节为起始位,并无数据,因此从第二个字节开始,得到传感器1中两个解码后的报文有效数据为为0x24d8893ca584100和0x24d8845abf34100

#!/usr/bin/python

def crc(x,y):
	while(x>y):
		l = len(bin(x)) - len(bin(y))
		t = int(bin(y)[2:]+'0'*l,2)
		x ^= t
	return x
m = 0
for i in range(0x200):
	if i < 100:
		continue
	if crc(0x24d8893ca584100,i) == 0x81 and crc(0x24d8845abf34100,i) == 0x19:
		m = i 
		print i
		break
print hex(crc(0x00024ddeadbeef4100,m))
print hex(crc(0x00024dbaada5554100,m))

根据crc校验算法,先由已知校验码算出y的值,再由除了第一个字节d的所有数据得到最后一个字节的crc校验码值,一个是0xb5,一个是0x15。

得到最终flag:{b515}

Russian-zips

下载附件:

得到一个压缩文件,解压需要密码

发现是伪加密
直接修复压缩文件即可解压

发现是Minecraft的地图文件

打开就得到了flag

ext3

下载附录,用winhex以十六进制打开,搜索flag,一直next找

题目描述光盘,将文件后缀改成iso解压缩找到该文件

打开为base64解码得到flag

flag为flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}

SimpleRAR

使用WinRAR打开附件,发现secret.png的文件头损坏了,并且还有一个flag.txt

打开flag.txt

将文件丢进winhex

我们要的是文件块而不是子块,于是更改7A为74,成功解压,发现是一张空白的图片,继续用winhex打开

发现是gif格式,将其重命名并用PhotoShop打开,发现有两个空白的图层

将两个图层分别提取出来,用StegSolve打开,不断点击箭头直到显示出图像

将两个图片合成补全二维码

使用QR-research扫描得到flag:flag{yanji4n_bu_we1shi}

base64stego

下载附件是个加密的文件

使用360压缩打开:

是一连串的base64编码解密得到

没啥信息,猜测base64隐写,使用python脚本

# 此方法用来将包含隐藏信息的字母转换为base64编码表对应的序列值(十进制数)并返回
def base64change(s):
    table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' # base64编码表,恰好索引值对应字母
    for i in range(len(table)):
        if table[i] == s:
            return i


# 此方法用来获取隐藏信息二进制字符串
def base64solve():
    f = open('C:\\Users\\admin\\Desktop\\stego.txt','r')
    lines = f.readlines()

    flag_bin = ''
    for line in lines:
        # print(line)
        l = line.strip() # 去掉两边的空格
        if l[-1] == '=':
            if l[-2] == '=': # 含有两个=则包含4bit信息
            # 将返回的十进制转换为二进制数,由于返回的二进制数为0b开头,所以从第三位开始取,然后用0填充头部为4位,再取后四位隐藏的信息
                flag_bin += bin(base64change(l[-3]))[2:].zfill(4)[-4:]
            else:# 只含一个=则包含二bit信息
                flag_bin += bin(base64change(l[-2]))[2:].zfill(2)[-2:]
    #print(flag_bin)
    flag = ''
    for i in range(len(flag_bin)//8):
        flag += chr(int(flag_bin[i * 8:(i + 1) * 8], 2))
    print(flag)


if __name__ == '__main__':
    base64solve()

得到flag:flag{Base_sixty_four_point_five}

功夫再高也怕菜刀

下载附件是一个流量包文件:

先放到kali使用binwalk命令查看,发现有一个压缩包文件

使用foremost分离得到一个压缩包:

发现文件被加密了,猜测流量包里有密码:

然后用追踪TCP流,发现第七个流就是我们需要的,,jpg格式是以:FFD8FF开头,以FFD9结尾然后用.jpg导出来

打开 010editer,新建文件,16 进制编辑模式,菜单》编辑》粘贴自》粘贴自 16 进制文件

另存为jpg文件打开得到密码

Th1s_1s_p4sswd_!!!

后打开压缩包输入密码得到flag

flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}

北京地铁

下载附件打开是一个文件和照片

题目描述:

将照片扔进stegsolve 发现lsb隐写

这应该是密文

7SsQWmZ524i/yVWoMeAIJA==

根据提示是AES
密钥应该在图片里

仔细看
发现魏公村的点颜色不一样

密码猜测是weigongcun

解密

得到flag:DDCTF{Q*2!x@B0}

恶臭的数据包

打开压缩包,有个流量分析包,用wireshark打开

看到是wifi,名字叫做mamawoxiangwantiequan

放进kali进行密码破解

aircrack-ng '/root/桌面/cacosmia.cap' -w /usr/share/wordlists/rockyou.txt

破解得到密码为12345678

解密数据包

随后用wireshark打开

找到了一个post请求,114514.png

看到了pk(压缩包)和flag.txt,应该是把png弄出来分离然后解压获得flag

选择原始数据,复制后导入winhex

把前面的请求删掉获得png图片

获得图片

对图片进行foremost分离操作,分离得到zip

继续找密码

看cookie值得到hint

去找dns,因为ping之前要先去dns解析

26rsfb.dnslog.cn

就是压缩包的密码

解压成功,得到flag{f14376d0-793e-4e20-9eab-af23f3fdc158}

知识点

  • aircrack-ng破解无线密码
  • 图片隐写
  • JWT
  • DNS

A-Weird-C-Program

tunnel

打开数据包,发现全是有base64的dns域名请求,使用tshark提取A记录的域名

tshark -Y "ip.dst==8.8.8.8  && dns.qry.type == 1" -r tunnel.pcap | awk '{print $(NF)}' | awk -F '.' '{print $1}' > b64.txt

使用脚本进行解码拼接,得到一个加密的zip:

import base64

dec = ""

with open("b64.txt","r") as f:
    for line in f.readlines():
        tmp = line.strip()
        missing_padding = len(tmp) % 4
        if missing_padding != 0:
            tmp += b'='* (4 - missing_padding)
        dec += base64.b64decode(tmp)

print(len(dec))
with open('flag.zip', 'w') as f:
    f.write(dec)

但是flag.zip需要使用密码解密,猜测是base64解密

#存为exp然后python exp.py>2.txt保存添加等号后的base64信息

with open("./b64.txt", "r") as f:
    x = f.readlines()
for i in x:
    i = i.strip()
    l = 4 - len(i) % 4
    if l != 4:
        i += "="* l
        print(i)

然后使用base64隐写脚本得到密码

def inttobin(a, n):
    ret = bin(a)[2:]
    while len(ret) < n:
        ret = '0' + ret
    return ret

table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
f = open("2.txt", "r")
tmpbin = ''
res = ''
line = f.readline()
while line:
    if line[-2] == '=':
        if line[-3] == '=':
            tmpbin += inttobin(table.index(line[-4]), 6)[2:]
        else:
            tmpbin += inttobin(table.index(line[-3]), 6)[4:]
    line = f.readline()
quotient = int(len(tmpbin)/8)
for i in range(quotient):
    res += chr(int(tmpbin[8*i:8*i+8], 2))
print(res)

得到密码

password: B@%MG"6FjbS8^c#r

然后解压得到flag图片

flag{D01n't_5pY_0nmE}

A-Weird-C-Program

下载附件是一个cpp后缀文件,使用devc++打开:

注意到有奇怪的间距又代码里说有隐藏信息

猜测这个空格和制表符是0和1

尝试得到

x = "000001110100 000001101000 000001100101 000001011111 000001100110 000001101100 000001100001 000001100111 000001011111 000001101001 000001110011 000001011111 000001010111 000001110000 000001010101 000001000001 000001001001 000001110100 000001110011 000001100001 000001100100 000001101101 000001101000 000001100001 000001101011 000001010 "
print(''.join([ chr(int(i,2)) for i in x.split() ]))

得到flag

flag:{WpUAItsadmhak}

抓住个黑客(无)

EASY_EVM(无)

你猜他是什么文件

下载附件

首先拿到的这是一个png文件,将文件丢入winhex

观察图片头部,发现是000000000000
但是通过观察文件尾部可以发现,是一个固定的字串 C4 3D 7B 00 40 07 00,所以我们必须把头部改为正常的rar头部才可以恢复

  • 将开头的00 00 00 00 00 00 00 00替换为52 61 72 21 1A 07 01 00 ,修改文件后缀名为rar,得到一个加密的rar格式压缩包。

保存文件,后缀改成rar,打开后是个加密压缩文件

猜测弱密码123456打开

解密完后,得到一张1.png和一个test.zip

在test.zip里面藏有一个1.png,可以看到是一样的,猜测是明文攻击,所以导入arch工具

后得到 test_decrypted.zip 打开得到flag.txt

flag{3f76318f507fe7eb6422cd0703c64c88}

我们生活在南京-1

我们生活在南京-2

下载附件得到一个mp3音频,根据题目描述CW可知这是一个摩斯码

使用au打开看频谱图

短的为. 长的为- 得到:

..-. .-.. .- --. -.-. .-- .. ..... ....- - .-. ....- -.. .. - .. ----- -. -- ...-- - .... ----- -..

使用工具解密得:

题目要求小写,最终flag为:

flag{cwi54tr4diti0nm3th0d}

再见李华1

下载附件是一张图片,其中有md5,Stegsolve也没用,上HXD,经过分析发现其中是有文件的,如图所示:

直接放到kali中分离文件,使用foremost,得到一个压缩包

将压缩包拖进ARCHPR破解掩码破解

解压码为:15CCLiHua

解压结果如图:

最终flag{Stay hungry, Stay foolish.}

easy_misc(代码)

首先是一个压缩包,需要密码,进行密码爆破得到密码qwer。

解压后,得到一张图片:

打开链接,发现需要密码,盲猜png图片被改了高度。

使用爆破脚本得正确宽和高,在winhex改掉保存得

下载云盘文件 file.pcap 到本地打开后出现报错如图:

为了解决这种情况,先点OK,按快捷键 Ctrl+shift+s,选中第二个,然后点保存为 file.pcapng,做这一步为了方便,我们使用pyshark这个库解析时候,不会出现刚才打开 file.pcap 的报错信息。

2.sql注入

分析了一下数据包后,很明显的是延迟注入。

过滤器为http.request.uri.query.parameter contains "tologin",如图:

解密代码如下:

import re
import pyshark

# tshark_path这个路径要根据你自己情况更改,由于我不是默认安装目录所以我需要填写。
cap = pyshark.FileCapture("file.pcapng", tshark_path="D:/Program Files/Wireshark/tshark.exe", display_filter='http.request && http.request.uri.query.parameter contains "tologin"')

flag = list(39 * " ")
for c in cap:
    # 由于我不太会解析xml,官方文档也没找到,所以使用最简单str() + re正则表达式
    result = str(c["urlencoded-form"])[:300]
    pos = re.findall("select flag from flag limit 0,1\),(.*?),", result)[0]
    number = re.findall("select flag from flag limit.*?\)\)=(.*?),", result)[0]
    flag[int(pos) - 1] = chr(int(number))

print("".join(flag))

flag为:flag{cd2c3e2fea463ded9af800d7155be7aq}

base编码(代码)

misc_xor

附件下载打开后发现是一段字符串

cidb~0f<f==0f634014`5g734c0=g34ag=f`fx

观察字符串没有发现什么规律,去看题目misc_xor,可以发现xor是异或的缩写

异或作为一个运算符,运用如下

我们可以使用异或进行加密,即把加密字符转化成二进制,再通过秘钥(二进制)加密形成加密字符,例如下图所示

知道如何进行异或解密后题目就很简单了,但是还需求出秘钥

因为题目给的字符串不长,且一般flag格式为flag{xxxx},猜测字符串开头'cidb'对应'flag',将其转换为二进制,去求秘钥

求得秘钥为5(00000101)

最后flag{5c9c885c361541e0b261f58b61db8cec}

简单的图片

下载附件是一张png图片:

先猜测LSB隐写的三通道000

RGB是红绿蓝 但他们的值代表的实际上是亮度

R的数字越大,则代表红色亮度越高;R的数字越小,则代表红色亮度越低。G,B同理

每个像素用R,G,B三个分量表示,那么一张图片就像一个矩阵,矩阵的每个单位就是(0~255,0~255,0~255)

而BGR的意思是位平面的顺序按照BGR的顺序进行排列

观察提取出来的最低位二进制

结合出题的是xsctf,猜测x,s,c,t,f分别对应着数字

0,1,2,3,4

['xxfxc', 'xxfst', 'xxtfc', 'xxfxt', 'xxfft', 'xxttc', 'xxffs', 'xxsft', 'xxftc', 'xxtfx', 'xxtfc', 'xxfcf', 'xxfxs', 'xxtfx', 'xxctx', 'xxfcx', 'xxtfx', 'xxsff', 'xxfsf', 'xxtfc', 'xxfxt', 'xxcxs', 'xxtfx', 'xxfsf', 'xxtfc', 'xxftx', 'xxfts', 'xxfxs', 'xxfcf', 'xxsfc', 'xsxxx']

则以上数据可以改写为

00402,00413,00342,00403,00443,00332,00441,00143,00432,
00340,00342,00424,00401,00340,00230,00420,00340,00144,
00414,00342,00403,00201,00340,00414,00342,00430,00431,
00401,00424,00142,01000

将5进制转化为十进制

102,108,97,103,123,92,121,48
117,95,97,114,101,95,65,110,
95,49,109,97,103,51,95,109,
97,115,116,101,114,47,125

将十进制用ASCII码转化为字符

flag{\y0u_are_An_1mag3_master/}

ASCII文本,十六进制,二进制,十进制,Base64转换器(在线ascii解码)

Misc流量分析

guess-xsctf(代码)

arrdeepee(代码)

神奇的压缩文件

得到的压缩包里有个txt

扔进winhex
发现PK,即有zip文件隐藏

用foremost和binwalk都失败

使用AlternateStreamView扫描得到flag.zip

就感觉最开始扫描出来的压缩包里的注释似乎可疑

得到1101100 1100011 1110100 1100110 111101 1011011 0110010 0011001 1011011 0011011 1011011 1110010 0110010 01111101

regexpire(pawn 代码)

Wireshark(HTTP)

1.打开wireshark

下载附件打开

导出HTTP

2.一般信息大多是藏在url,html,图片当中的

对http进行追踪在第一条的请求中存在网页的请求:在线图片添加/解密隐藏信息(隐写术)工具 - 站长辅助工具 - 脚本之家在线工具

一般这种题型的解题方向都在html,png,url中

省去选择的步骤直接全部恢复

发现有一个风景照的png 和俩个较大的文件

结合上述个给出的一个图像解密网址,将俩个较大文件尝试放入hex editor中删除多余的数据尝试将其也变为图片

(这时就需要了解一个知识

PNG图片固定以 89 50 4E 47 0D 0A 1A 0A (4个字节)开头

49 45 4E 44--IEND结尾)

删除多余数据

改其后缀名为.png查看图片内容俩个较大数据包就会得到下面俩张图片

查看给出的解密网站发现解密时还会需要一个密码所以考虑从带key的照片入手再把其拖入hex editor

保存再次查看图片

出现了key

这是就返回所给出的解密网站将风景照作为解密图片上传,密码为所给出的key进行解密

看到所给出的信息包含0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F所以判断可能是base16,上网寻找在线翻译工具进行解密

Mysterious-GIF(binwalk oppenssl)

picture

下载得到附件是一张图片

解题思路:

(1)将图片放入winnhex中查看

发现文件头是jpeg、jpg格式,将文件后缀改成jpg

再丢进kali中使用binwalk中分析

(2)binwalk分离图片

foremost分离失败,使用binwalk -e 尝试

得到两个文件

猜测是base64编码于是进行解码,可以使用在线解码网站或者python

解密有kp猜测为压缩包

使用python解密

import base64
str=""#base64码
target=base64.b64decode(str)
f=open(r"文件路径",'wp')
f.write(target)
f.close

(4)打开flag文件

出现KP字样,修改为PK,修改后缀为.zip

(5)解压文件

解压文件需要密码,根据提示得到:integer division or modulo by zero

解压得到

猜测是uuencode编码解码得到flag

CISCN{2388AF2893EB85EB1B439ABFF617319F}

Hidden Write

下载附件是一个png图片

放进steglove 和winhex无任何东西

strings查看图片字符串

习惯先用 strings maomao1.png 命令查看一下字符串信息,发现在png文件结尾表示IEND后面还存在字符串 ef4526a41ea,考虑还有其他字符串。

发现png文件结尾后还有一串字符串:ef4526a41ea,不知道是啥,先放着。

接下来zsteg一波png:·

发现有隐藏的png文件IHDR数据,提取出来并保存为l.png:·

010打开1.png,修复文件头:

打开修复后的1.png:

发现1.png和maomaol.png是一样的图片,但文件大小不一样,两张一样的png考虑盲水印:

得到output.png:

依稀能看到字符串:903ef},应该是flag的后半段。·

接下来寻找flag的前半段,没有其它信息,再次zsteg新得到的图片l.png看一下:

发现还隐藏有png文件的IHDR数据,再次提取出来并保存为2.png:

010打开2.png,修复文件头:

发现再次得到一张一样的图片,那就再次zsteg新得到的图片2.png看一下:

得到f1ag的前半段:hxb2018{490fe1033073e985.

将flag的前半段和后半段拼接提交发现不对,想起还有最开始png结尾后的字符串:

ef4526a41ea,猜测为f1ag的中间部分。

最后拼接3部分字符串得到flag:
hxb2018{490fe1033073e985ef4526a41ea903ef}

miao~

得到一个jpg图片

Audacity中打开,查看频谱图,得到密码CatCTF

在deepsound中打开wav文件,得到flag.txt

打开flag.txt发现是兽语

兽音译者在线编码解码 - 兽音翻译咆哮体加密解密

得到flag:CatCTF{d0_y0u_Hate_c4t_ba3k1ng_?_M1ao~}

[中等] QR1
打开附件为一张图片

细看有一些小点

使用Stegsolve查看是否为图片隐写

发现图片太大了

压缩一下

压缩成533X533

放入工具中得到二维码

扫描得到flag

flag{AHA_U_Kn0w_QR_c0d3_312468ed-ea59-4fe9-9cd2-b5e9d8b39498}

Misc文件类型

下载文件给了一串16进制

使用16进制转ascii

前面是46ESAB即BASE64倒序,删除前面7个字符进行baSe64解密:

得到flag

Time_losing

下载附件解压后得到stego下的47个txt文件。


2.根据题目提示时间2033-05-18 11:33:20将得到的txt文件修改时间减去该时间。


3.得到47个整数。
4.将这些整数转换成ASCII码即可得到flag。

XMan{seems_to_be_related_to_the_special_guests}

摩斯电码

下载附件是个wav音频丢入Audacity中查看频谱图

猜测长的为-,短的为.

最后得到- .... . ... . -.-. .-. . - .-- -.. ..-. .-.. .- --. .. ... -- --- .-. . ... .

摩斯密码解密得

得到flag{THESECRETWDFLAGISMORESE}

CatCatCat

下载附件是一个图片和txt文件:

将猫猫.jpg图片放在kali中

使用命令strings 猫猫.jpg | grep flag

发现有敏感内容出现,提示密码为catflag

我养了一只兔子的文件中,首行字母为U2F,根据首行字母为U2F和刚刚得到的密码,可以推断为rabbit加密方式

Rabbit加密-Rabbit解密-在线Rabbit加密解密工具

将rabbit解密后的内容放入到base91解密器中进行解密

Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]

可以看到解密内容中有很多. ! ? 符号,上网查阅资料后,该语言为Ook语言

使用Ook to Text,得到flag

CatCTF{Th1s_V3ry_cute_catcat!!!}

流量分析(http)

picture3(文件分离,base64隐写)

附件是一张图片,老样子,先丢进binwalk里,分离出来一个txt文件:

可以看到很多base64的字段,用base64隐写试试:

flag就在里面:flag{Ba5e_64OFive}

第四扩展FS(取证题)

解压后只有一张图片

二、解题思路

jpg文件首先用binwalk工具查看是否有隐写,进行分离图片,后发现有zip的文件,打开有个file.txt文件有密码,查看jpg图片的备注有东西,应该是密码,打开文件后出现一些数据,后进行词频分析得到flag。

三、解题过程

先用binwalk工具查看

发现有中间有个zip的文件,利用foremost工具解出文件

打开zip的文件发现里面有txt文件

但是有密码,看一下源jpg的图片发现备注里有东西

这个应该就是密码,打开文件发现一堆的数据

from collections import Counter

f=open('file.txt','r')
f_read=f.read()
res = Counter(f_read)
print(res)

DCTF{ka1f4NgxlntAi}

jpg(逆向异或)

import base64

f = open("ZmxhZy5jb2Rl", "rb")
data = f.read()
f.close()
 
file_name = base64.b64decode("ZmxhZy5jb2Rl")
f = open(file_name, "wb")
f.write(base64.b64decode(data))
f.close()

运行后

s = [0x51, 0x5B, 0x56, 0x50, 0x0A, 0x58, 0x45, 0x4D, 0x68, 0x42, 
  0x68, 0x70, 0x52, 0x43, 0x68, 0x63, 0x5F, 0x52, 0x19, 0x74, 
  0x07, 0x73, 0x04, 0x68, 0x71, 0x06, 0x77, 0x0E, 0x37]
flag = ''
for i in s:
    flag += chr(i ^ 0x37)

print(flag)

得到flag为:RCTF{orz_u_Get_The.C0D3_F1@9}

流量分析(sql注入)

下载附件得到一个流量包

找到get语句

id=1'%20and%20ascii(substring((select%20keyid%20from%20flag%20limit%200,1),1,1))=32%23

substring函数取字符串的特定位置,从1取到38
查看每个位置对应的ascii码
当ascii码正确时,取下个位置

简单写个脚本

import re

with open("1.pcapng", "rb") as f:
    contents = f.read()
    res = re.compile(r'0,1\),(\d+),1\)\)=(\d+)%23').findall(str(contents))
    dic = {}
    for a, b in res:
        if a in dic:
            if int(b) > dic[a]:
                dic[a] = int(b)
        else:
            dic[a] = int(b)
    flag = ""
    for i in range(1,39):
        flag += chr(dic[str(i)])
    print(flag)

得到flag

traffic

下载附件是一个流量包文件打开:

只有简单的icmp,dns和tls包,判断问题在icmp包长度上

编写脚本

str=[144,150,139,145,165,91,109,151,122,114,106,119,93,167]
for i in range(-50,50):
    flags=''
    for j in str:
        flags +=chr(i+j)
    if 'flag' in flags#判断flags中包含flag的
        print(flags)

得到flag:flag{1CmPG@M3}

LooL

题目描述:iVBORw0KGgoAAAANSUhEUgAAABwAAAAUCAIAAAARPMquAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3goNFiAI385k0QAAAPVJREFU......

下载附件是一张lol的图片,后面发现跟题目附件没有关系:

0x01 base64转图片

题目描述一段base代码,看见iVBO开头的基本就可以判定是图片了,因为解码后是PNG头。将代码粘贴复制到base64转图片网站,可以得到一张图片,保存为1.png。

利用exiftool工具查看图片信息,发现Dctf和一串数值,天真以为这就是flag,结果提交不对。

md5解密字符串:brainloller,提交也不对。

0x02 brainloller

下一步利用 bftools.exe 隐写工具,具体命令是bftools.exe decode brainloller 1.png --output 1.txt,打开1.txt发现是一段brainfuck代码。

++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>>>+.-<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<.

得到flag:youdidwell

Pixel-Princess

下载附件是一个压缩包里面有照片binwalk得到一个zip包和jpg照片,图片上写有Passpharase:BaD_DR4G0N

steghide extract -sf 文件路径

输入密码

神秘的交易

下载得到logicdata格式文件。Saleae Logic打开。

可以看到有时钟电平clk和数据电平data。查4442卡手册可以得知指令格式为:

1、每个指令从时钟高电平时数据下降沿后开始,数据从低位到高位的顺序发送。每个命令由三个字节组成:控制字节、地址字节、数据字节。时钟高电平数据电平上升沿代表本次命令结束。

2、与加密密钥相关的指令类型是0x33,用于校验口令。而4442卡的口令为三字节。

因此我们需要找到这样一串数据:

0x33 0x01 flag[1] 0x33 0x02 flag[2] 0x33 0x03 flag[3]

在6s950ms处找到这串数据:

第一段:

因此密钥的第一个字节是0x40。重点是在时钟电平找到开始和结束标志(表现为一个较宽的峰),然后从数据电平按从高到低读取数据。第二段和第三段就在第一段后,各相隔3位。以此类推得到flag。

得到flag:flag:SCTF{403110}

secret_in_the_center

下载附件打开是个无后缀文件:

使用winhex打开:

发现为压缩包头,修复文件头将后缀改成zip解压缩发现一个文本文件打开

共三行,每行两段46位的十进制数字。如果将其看作三角形的三个顶点,然后根据题目提示计算三角形的重心:

x1, y1 = 1284127282371497062677311074762266138188682452, 1061034162220021178928947580605340250986215805
x2, y2 = 3340934738305796487992773649714719725826419120, 3521272815040026806681782376130203385829188680
x3, y3 = 2227289825537197658661849099809813150550946084, 2200795509400016754176113985081377116143242930

x = (x1 + x2 + x3) // 3
y = (y1 + y2 + y3) // 3
x = hex(x)[2:]
y = hex(y)[2:]
print(x, y)

输出:

后猜测为ascii,ascii解码得到flag:

Flying_High

下载得到gz压缩包,tar解压:

得到4个bin文件,file看一下:

需要用到UBI Reader。安装后解压四个文件:

for i in `ls *.bin`; do ubireader_extract_files $i -o extracted_$i; done

在image3.bin中找到可疑信息:

打开视频找到flag。

flag:HITB{96ac9a0458279711e5d61f10849e6c58}

Usb-probing

打开照片后得到flag:

flag:ALEXCTF{SN1FF_TH3_FL4G_OV3R_U58}

happy_puzzle(修复文件)

godwave(曼彻斯特编码)

Hidden_secret

下载得到Hidden secret文件夹,内含1、2、3三个文件。查看后发现内容均为大量十六进制数字。

题目给了三个文件,第一个文件1,开头是03 04 14 00,很像压缩包开头,补个50 4B,保存成zip后,用7-zip打开压缩包,发现2.jpg其中有个1.txt

2.txt中有提示:

将1.jpg中1.txt分离出来

K<jslc7b5'gBA&]_5MF!h5+E.@IQ&A%EExEzp\\X#9YhiSHV#

base92解码得到flag:

unctf{cca1a567c3145b1801a4f3273342c622}

disordered_jpg

下载得到jpg文件,打开显示已损坏。十六进制编辑器打开:

可以观察到文件头部是乱序的,可以大致看到文件头FF D8和Exif块开头FF E1 XX XX 45 78 69 66的痕迹。对比一下:

很明显该文件以每四个字节为单位进行了反序,同时因为总字节长度除4余1,最后一字节D9是正常的。

写python脚本将其修复:

jpg = open('2.jpg', 'rb').read()
tmp = b''

l = (len(jpg) - 1) // 4
for i in range(l):
    tmp += jpg[4 * i + 3].to_bytes(1, 'big')
    tmp += jpg[4 * i + 2].to_bytes(1, 'big')
    tmp += jpg[4 * i + 1].to_bytes(1, 'big')
    tmp += jpg[4 * i].to_bytes(1, 'big')

# .to_bytes(1, 'big')将数字转换为字节,其中1是字节位数,big是高位在前

out = open('out.jpg', 'wb')
out.write(tmp)

得到out.jpg:

flag:flag{F098996689560BBB1B566EBC10D5E564}

Run1

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-18 19:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-18 19:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-18 19:06:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-18 19:06:01       20 阅读

热门阅读

  1. 学习Android的第十三天

    2024-02-18 19:06:01       32 阅读
  2. 3 处理机调度和死锁(下)

    2024-02-18 19:06:01       31 阅读
  3. Linux的命令简记

    2024-02-18 19:06:01       27 阅读
  4. Rust CallBack的几种写法

    2024-02-18 19:06:01       29 阅读
  5. 11-编写自动化测试

    2024-02-18 19:06:01       30 阅读
  6. 12-输入/输出项目构建命令行程序

    2024-02-18 19:06:01       29 阅读
  7. [蓝桥2022国赛] 费用报销

    2024-02-18 19:06:01       27 阅读
  8. 贪吃蛇小游戏

    2024-02-18 19:06:01       27 阅读
  9. PCIE 4.0 Power Mangement

    2024-02-18 19:06:01       26 阅读
  10. python用socket传输图片

    2024-02-18 19:06:01       27 阅读
  11. Redis常用命令

    2024-02-18 19:06:01       27 阅读
  12. 4 存储器管理(下)

    2024-02-18 19:06:01       26 阅读
  13. 16.3 Spring框架_SpringJDBC与事务管理(❤❤❤❤)

    2024-02-18 19:06:01       28 阅读
  14. Docker-compose容器编排技术

    2024-02-18 19:06:01       25 阅读