目录
- [UTCTF2020]fileheader
- [BSidesSF2019]zippy
- [UTCTF2020]basic-forensics
- [MRCTF2020]Hello_ misc
- [WUSTCTF2020]spaceclub
- USB
- [MRCTF2020]Unravel!!
- [ACTF新生赛2020]music
- [UTCTF2020]zero
- [MRCTF2020]PYFLAG
- [CFI-CTF 2018]webLogon capture
- 粽子的来历
- [UTCTF2020]File Carving
- hashcat
- [QCTF2018]X-man-A face
- [watevrCTF 2019]Evil Cuteness
- [SCTF2019]电单车
- [INSHack2017]sanity
- [湖南省赛2019]Findme
- voip
- [GUET-CTF2019]soul sipse
- [ACTF新生赛2020]剑龙
- Business Planning Group
- [UTCTF2020]spectogram
- [UTCTF2020]sstv
- key不在这里
- [HDCTF2019]你能发现什么蛛丝马迹吗
[UTCTF2020]fileheader
白给题目,补PNG文件头
89 50 4E 47
有点简单过头了。
flag:
flag{3lit3_h4ck3r}
[BSidesSF2019]zippy
找到了压缩包的密码
supercomplexpassword
kali中binwalk分离出压缩包,得到flag
flag{this_flag_is_your_flag}
[UTCTF2020]basic-forensics
修改后缀为txt直接查到flag。。。。
flag:
flag{fil3_ext3nsi0ns_4r3nt_r34l}
[MRCTF2020]Hello_ misc
利用binwalk直接梭出来图片中的信息。
stegsolve对该图片发现存在隐写,得到一张图片,上面有压缩包的密码。
然后压缩包密码!@#$%67*()-+
解开binwalk分离出来的加密的zip发现txt存在127,63,255,191
a='{:08b}'.format(63)
b='{:08b}'.format(127)
c='{:08b}'.format(191)
d='{:08b}'.format(255)
#00111111
#01111111
#10111111
#11111111
很明显在这里,每个数的二进制数只有前两位不同,因此可以将其全部转换后,进行打印
得到压缩包密码
with open('out.txt','r') as file:
str=''
for i in file.readlines():
d='{:08b}'.format(int(i))
str+=d[0:2]
for j in range(0,len(str),8):
b=str[j:j+8]
print(chr(int(b,2)),end="")
rar-passwd:0ac1fe6b77be5dbe
发现里面存在一个word文件,修改后缀名为doc,打开发现存在base64字符串(需要手动改为红色
)
把doc的内容存入txt,然后进行读取解码
import base64
with open('1.txt','r') as file:
for i in file.readlines():
d=str(base64.b64decode(i),'utf-8')
#print(d)
print(d.replace('1',' '))
flag:
flag{He1Lo_mi5c~}
[WUSTCTF2020]spaceclub
打开发现长短不一的空格,盲猜长的为0短的为1表示二进制。直接用记事本替换。
011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101
然后用tokeii👴网站直接梭
https://ctf.mzy0.com/
flag:
flag{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}
USB
先将key文件修改后缀为zip,因为利用010可以看见有个pk头。
发现zip里存在有个流量包,里面为键盘流量。
https://github.com/WangYihang/UsbKeyboardDataHacker
直接考虑用脚本梭
得到了key
对另一个压缩包进行处理,修补rar头部后,发现存在图片
(将7A修改为74)
利用StegSlove进行查看图片,发现Blue Plane 0存在图片二维码
微信扫一扫得到
ci{v3erf_0tygidv2_fc0}
维吉尼亚解密得到
再将fa{i3eei_0llgvgn2_sc0}
利用栅栏解码得到flag。
flag:
flag{vig3ne2e_is_c00l}
[MRCTF2020]Unravel!!
先将PNG利用binwalk获取东西
发现存在aes,和aes密钥Tokyo
在一开始的文件中我们可以发现一个密文
key=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=
解密得到
CCGandGulu
这为win-win.zip的密码。取出一个wav直接用SilentEye梭。
flag:
flag{Th1s_is_the_3nd1n9}
[ACTF新生赛2020]music
题目提示music,但是下下来是乱码文件。
别人wp说全文出现大量的A1,因此需要与A1异或文件的二进制得到正确的文件。
(因为正常的m4a文件中,主要是00比较多,因此在这里是00和A1异或后,自然出现大量A1)
保存发现音频里念的就是flag了
flag:
flag{abcdfghijk}
[UTCTF2020]zero
打开发现有套宝最爱的0宽,直接tokeii爷网站梭。
flag:
flag{whyNOT@sc11_4927aajbqk14}
[MRCTF2020]PYFLAG
三张图片的末尾,存在一部分zip的十六进制,根据顺序将其连在一起
得到一个新的zip,进行密码的爆破
密码为1234
打开后存在一个hint,提示:
我用各种baseXX编码把flag套娃加密了,你应该也有看出来。
但我只用了一些常用的base编码哦,毕竟我的智力水平你也知道...像什么base36base58听都没听过
提示:0x10,0x20,0x30,0x55
以及flag文件
G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(j~tG&eOdGcq+aG(t5oG(j~qG&eIeGcq+aG)6Q<G(j~rG&eOdH9<5qG&eLvG(j~sG&nRdH9<8rG%++qG%__eG&eIeGc+|cG(t5oG(j~sG&eOlH9<8rH8C_qH9<8oG&eOhGc+_bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(j~tG&wXxGcq+aH8V6sH9<8rG&eOhH9<5qG(<E-H8M3eG&wXiGcq(ZG)6Q<G(j~tG&eOtG%+<aG&wagG%__cG&eIeGcq+aG&M9uH8V6cG&eOlH9<8rG(<HrG(j~qG&eLcH9<8sG&wUwGek2)
hint 的意思应该是该部分的flag分别为base16,32,64,85加密后得到的。
网上的脚本应该都是官方的,因此我自己写了个比较垃圾的脚本。。
import base64
import re
with open("flag.txt",'rb') as f:
flag = f.read()
while True:
f1=0 #标识符,判断是否判断完一次
if b"MRCTF{" in flag:
print(flag.decode())
break
if f1==0 and re.match("^[0-9A-F=]+$",flag.decode()) is not None: #base16
flag = base64.b16decode(flag)
print(16)
print(flag)
f1=1
if f1==0 and re.match("^[A-Z2-7=]+$",flag.decode()) is not None: #base32
flag = base64.b32decode(flag)
print(32)
print(flag)
f1=1
if f1==0 and re.match('^[A-Za-z0-9+/=]+$',flag.decode()) is not None: #base64
flag = base64.b64decode(flag)
print(64)
print(flag)
f1 = 1
if f1==0: #base85
flag = base64.b85decode(flag)
print(85)
print(flag)
得到flag:
flag:
{Y0u_Are_4_p3rFect_dec0der}
[CFI-CTF 2018]webLogon capture
password字段就是flag
from urllib.parse import unquote
str='%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20'
str_1=unquote(str,'utf-8')
print(str_1)
flag:
flag{1ns3cur3_l0g0n}
粽子的来历
题目描述看的头疼
doc直接无法打开,用010打开发现存在报错
修改好后进行打开,发现存在行间距不同的古诗文。
尝试把1.5当作1,1的当作0,构造二进制字符串,进行进一步md5加密。
最后发现我是C.doc
的是正确的。
flag:
flag{d473ee3def34bd022f8e5233036b3345}
[UTCTF2020]File Carving
修改文件后缀为zip,发现存在hidden_binary
文件
利用010搜索找到flag
复制出来后,去掉不属于数字以及a-f小写字母的部分,得到flag
flag:
flag{2fbe9adc2ad89c71da48cabe90a121c0}
hashcat
通过010发现为一个doc文件,然后利用Passware Kit Forensic
爆破打开,得到密码9919
然后发现打不开,因此根据题目,猜是别的office类型。
最后确认为ppt,在第7页存在一个flag,把文字颜色改为红色就可看到
flag:
flag{okYOUWIN}
[QCTF2018]X-man-A face
先补全二维码
(我用画图工具补的)
扫码得到
KFBVIRT3KBZGK5DUPFPVG2LTORSXEX2XNBXV6QTVPFZV6TLFL5GG6YTTORSXE7I=
直接出了
flag:
flag{Pretty_Sister_Who_Buys_Me_Lobster}
[watevrCTF 2019]Evil Cuteness
修改后缀为zip得到flag
flag:
flag{7h475_4c7u4lly_r34lly_cu73_7h0u6h}
[SCTF2019]电单车
直接用Audacity打开
长的为1,短的为0,取最中间的一段得到
0111010010101010011000100
然后发现说需要
PT2242信号:前面4bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,最后一位是停止码。
因此flag为
flag{01110100101010100110}
[INSHack2017]sanity
签到?为什么会有这种题。。
flag{Youre_sane_Good_for_you}
[湖南省赛2019]Findme
1.png
看起来有点奇怪
在010里报crc错误
利用别人祖传的脚本爆破crc
import zlib
import struct
filename = '1.png'
with open(filename, 'rb') as f:
all_b = f.read()
crc32key = int(all_b[29:33].hex(),16)
data = bytearray(all_b[12:29])
n = 4095 #理论上0xffffffff,但考虑到屏幕实际/cpu,0x0fff就差不多了
for w in range(n): #高和宽一起爆破
width = bytearray(struct.pack('>i', w)) #q为8字节,i为4字节,h为2字节
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print("宽为:",end="")
print(width)
print("高为:",end="")
print(height)
exit(0)
#得到结果
#宽为:bytearray(b'\x00\x00\x00\xe3')
#高为:bytearray(b'\x00\x00\x01\xc5')
修改后得到正确的宽高
检查发现有两个字段缺少IDAT标识,需要将其补上
然后就可以正常打开图片了
利用SteghSlove发现存在一个二维码,直接扫描得到flag的一部分。
得到第一串
ZmxhZ3s0X3
2.png
文件尾存在大量别的文件,以及2000多个7z
但是直接用foremost出不了东西,因此考虑将7z改为pk,再进行打开
最终找到目标的flag部分
1RVcmVfcPK
3.png
该图片的crc看起来不对劲
正常图片的crc明显看起来多很多
因此将这些crc全部提取出来
a=['33','52','6c','5a','33','30','3d']
str=''
for i in a:
str+=chr(int(i,16))
print(str)
得到结果
3RlZ30=
4.png
末尾有提示
cExlX1BsY=
5.png末尾同样存在提示
Yzcllfc0lN
然后要把这五串排列组合进行判断,最后得到flag的为
import re
from itertools import permutations
import base64
str=''
items = ['ZmxhZ3s0X3','3RlZ30=', '1RVcmVfc','Yzcllfc0lN', 'cExlX1BsY']
for p in permutations(items):
str=p[0]+p[1]+p[2]+p[3]+p[4]
try:
flag=base64.b64decode(str)
if b'flag{' in flag:
print(flag)
except:
pass
flag:
flag{4_v3rY_sIMpLe_PlcTUre_steg}
voip
voip
是一种语音通话技术,在wireshark
里可以直接播放
然后flag就藏在里面
flag:
flag{9001IVR}
[GUET-CTF2019]soul sipse
wav
文件利用Steghide
直接梭出隐藏的文件
密码为空
steghide extract -sf /root/桌面/out.wav
给了个微云地址去下载图片。打开图片发现文件头不对
修补文件头打开
\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0034\u000d\u000a
得到
4070
1234
结果为两数相加。
flag:
flag{5304}
[ACTF新生赛2020]剑龙
一看题目就是要用stegosaurus
,但是还是按着hint的节奏做吧。
hint.zip
里面有个txt
,存在AAencode
编码
直接工具解就完事
http://www.hiencode.com/aaencode.html
后面有用的key
welcom3!
将hint.zip
里的hh.jpg
图片放入kali
中利用steghide
隐写解出得到密文
这段密文为des
加密,密钥在备注里
想要flag吗?解出我的密文吧~
U2FsdGVkX1/7KeHVl5984OsGUVSanPfPednHpK9lKvp0kdrxO4Tj/Q==
然后就是得到一个已经知道的提示哈哈哈。 没啥用。
https://www.sojson.com/encrypt_des.html
因此直接用剑龙梭就可以了,python
版本为(Python 3.7.6
)
flag:
flag{3teg0Sauru3_!1}
Business Planning Group
在结尾发现一个BPG
将该部分取出另存为bpg
保存,利用bpg
查看器得到图片里的信息
YnNpZGVzX2RlbGhpe0JQR19pNV9iM3R0M3JfN2g0bl9KUEd9Cg==
flag:
flag{BPG_i5_b3tt3r_7h4n_JPG}
[UTCTF2020]spectogram
切换成频谱图就看见flag了
flag:
flag{sp3tr0gr4m0ph0n3}
[UTCTF2020]sstv
装个sstv
播放就有flag
kali里装
apt-get install qsstv
flag:
flag{6bdfeac1e2baa12d6ac5384cdfd166b0}
key不在这里
二维码扫码发现直接是bing搜索。
(尴尬的是直接就可以看到wp)
数字上做文章
from urllib.parse import unquote
str='10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568'
flag=''
while len(str)!=0:
if int(str[:3]) < 127:
flag+=chr(int(str[:3]))
#print(str[:3])
str=str[3:]
else:
flag+=chr(int(str[:2]))
#print(str[:2])
str = str[2:]
#print(flag)
print(unquote(flag,'utf-8'))
flag:
flag{5d45fa256372224f48746c6fb8e33b32}
[HDCTF2019]你能发现什么蛛丝马迹吗
经典取证题,用volatility
直接取证
vol.py -f /root/桌面/memory.img imageinfo
判断为Win2003SP2x86
的镜像
习惯性找带png
后缀的文件,发现了flag.png
vol.py -f /root/桌面/memory.img --profile=Win2003SP2x86 filescan | grep -E "png"
把他dump
下来
vol.py -f /root/桌面/memory.img --profile=Win2003SP2x86 dumpfiles -Q 0x000000000484f900 -D ./
得到一张二维码,扫描二维码得到
jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=
当然直接解base
解不出来,所以再找是不是被什么加密了。
看一下cmdscan,发现了点东西
vol.py -f /root/桌面/memory.img --profile=Win2003SP2x86 cmdscan
接下来dump
进程,然后利用foremost
分离,
vol.py -f /root/桌面/memory.img --profile=Win2003SP2x86 memdump -p 1992 -D ./
发现key和iv,采用aes解密得到flag
解密得到flag
flag:
flag{F0uNd_s0m3th1ng_1n_M3mory}