BUUCTF MISC刷题笔记
Posted z.volcano
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF MISC刷题笔记相关的知识,希望对你有一定的参考价值。
BUUOJ
Misc
[MRCTF2020]pyFlag
三个图片尾部都有额外数据
按顺序拼在一起,另存为zip文件,里面有俩txt,爆破得到密码1234
hint.txt:
我用各种baseXX编码把flag套娃加密了,你应该也有看出来。
但我只用了一些常用的base编码哦,毕竟我的智力水平你也知道…像什么base36base58听都没听过
提示:0x10,0x20,0x30,0x55
flag.txt:
G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(jtG&eOdGcq+aG(t5oG(jqG&eIeGcq+aG)6Q<G(jrG&eOdH9<5qG&eLvG(jsG&nRdH9<8rG%++qG%__eG&eIeGc+|cG(t5oG(jsG&eOlH9<8rH8C_qH9<8oG&eOhGc+_bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(jtG&wXxGcq+aH8V6sH9<8rG&eOhH9<5qG(<E-H8M3eG&wXiGcq(ZG)6Q<G(jtG&eOtG%+<aG&wagG%__cG&eIeGcq+aG&M9uH8V6cG&eOlH9<8rG(<HrG(jqG&eLcH9<8sG&wUwGek2)
根据hint可以知道可能有base16、32、48、85
先用Python进行base85解码一次
再base16解码一次
GU2DKNRUIE2DINJWGQ2TKQJTG42TONJUGQZDGMJVHAZTANBWG44TKQJVGYZTQMZQGU4DGMZUGE3UCNRTGZBDKQJWIM2TSMZTGUZDMNRVIE2DONJWGZATIRBUG42TENSDGYZTMRJTGAZUI===
然后base32
54564A4456455A3757544231583046795A5638305833417A636B5A6C593352665A47566A4D47526C636E303D
再16
TVJDVEZ7WTB1X0FyZV80X3AzckZlY3RfZGVjMGRlcn0=
最后来一下base64
MRCTF{Y0u_Are_4_p3rFect_dec0der}
Business Planning Group
图片结尾有点东西,这个其实是bpg文件,misc入门的misc3考过
提取出来保存为bpg文件,不过windows下不能直接查看,参考上面那篇博客,下载工具查看
图片里有字符串
YnNpZGVzX2RlbGhpe0JQR19pNV9iM3R0M3JfN2g0bl9KUEd9Cg==
base64解码得到bsides_delhi{BPG_i5_b3tt3r_7h4n_JPG}
[ACTF新生赛2020]剑龙
先看hint.zip的内容,里面有两个文件
看一下txt
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
到在线网址解密一手,得到welcom3!
得到的这个应该是密码,说明hh.jpg应该是某种隐写,测试发现是steghide
解出的内容如下:
想要flag吗?解出我的密文吧~
U2FsdGVkX1/7KeHVl5984OsGUVSanPfPednHpK9lKvp0kdrxO4Tj/Q==
U2F开头,应该是AES
或者DES
这种,不过一般需要密码,再去找一下密码的线索,在图片的exif信息中
这里解出来让找一下stegosaurus
,在github上找到https://github.com/AngelKitty/stegosaurus
这个工具我以前做题的时候用过,详细介绍可以看这篇博客
题目中给的O_O其实是一个pyc
文件,改回后缀后使用这个工具解一下就行
[GWCTF2019]huyao
给了两张一样的图片,应该是盲水印
盲水印的话我遇到过三种,具体在另一篇博客介绍过
这里试了一下发现是频域盲水印
,上脚本
# coding=utf-8
import cv2
import numpy as np
import random
import os
from argparse import ArgumentParser
ALPHA = 5
def build_parser():
parser = ArgumentParser()
parser.add_argument('--original', dest='ori', required=True)
parser.add_argument('--image', dest='img', required=True)
parser.add_argument('--result', dest='res', required=True)
parser.add_argument('--alpha', dest='alpha', default=ALPHA)
return parser
def main():
parser = build_parser()
options = parser.parse_args()
ori = options.ori
img = options.img
res = options.res
alpha = options.alpha
if not os.path.isfile(ori):
parser.error("original image %s does not exist." % ori)
if not os.path.isfile(img):
parser.error("image %s does not exist." % img)
decode(ori, img, res, alpha)
def decode(ori_path, img_path, res_path, alpha):
ori = cv2.imread(ori_path)
img = cv2.imread(img_path)
ori_f = np.fft.fft2(ori)
img_f = np.fft.fft2(img)
height, width = ori.shape[0], ori.shape[1]
watermark = (ori_f - img_f) / alpha
watermark = np.real(watermark)
res = np.zeros(watermark.shape)
random.seed(height + width)
x = range(height / 2)
y = range(width)
random.shuffle(x)
random.shuffle(y)
for i in range(height / 2):
for j in range(width):
res[x[i]][y[j]] = watermark[i][j]
cv2.imwrite(res_path, res, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
if __name__ == '__main__':
main()
命令:python BlindWaterMarkplus.py --original 1.png --image 2.png --result res.png
拿到flag{BWM_1s_c00l}
[UTCTF2020]File Carving
尾部有额外数据,提取出来另存为zip文件
解压后拿到文件hidden_binary
,看了一下发现是ELF文件,果断放进kali里运行一下
这里遇到一个小问题,但是顺利解决了 ,同时学到一个命令
chmod u+x somefile 只授予这个文件的所属者执行的权限
[GUET-CTF2019]soul sipse
下载得到out.wav,拿Audacity分析下,没啥东西
那应该就是隐写了,一般情况下是mp3stego
,不过这题居然是steghide
,属实少见
这里没有密码,解出一个txt
https://share.weiyun.com/5wVTIN3
把文件下载下来,显示异常,原来是文件头有问题
修复好文件头,图片内容如下
unicode解码一下
两个数加起来就是flag:flag{5304}
[watevrCTF 2019]Evil Cuteness
尾部有额外数据,另存为zip
解压得到无后缀文件abc
就这…
[UTCTF2020]sstv
又是一个wav,百度一下题目名sstv,发现这玩意有点神奇啊
这里用到工具QSSTV
在linux下安装:apt install qsstv
安装完打开qsstv
,操作一波即可,关于qsstv的具体使用参考这篇文章
[UTCTF2020]spectogram
直接看频谱图…
我爱Linux
下载的图片打不开,发现是png的文件头,jpg的文件尾
定位到jpg尾部之后,发现后面的数据比较奇怪,看了大佬的wp得知这种数据格式是Python的序列化文件
把这些数据提取出来,保存在1.txt中
找到一篇Python反序列化的文章:https://jingyan.baidu.com/article/0bc808fcb7f91e5bd585b97d.html,跟着步骤写脚本
import pickle
f=open("1.txt","rb")
result=pickle.load(f)
f.close()
f1=open("out.txt","w")
f1.write(str(result))
f1.close()
得到一些坐标:
写一手脚本给它画出来:
f=open("out.txt","r")
txt=eval(f.read())
for i in range(len(txt)):
s=""
for j in range(1,77):
n=0
for k in txt[i]:
if k[0] == j:
n=1
break
if n:
s+=k[1]
else:
s+=" "
print(s)
f.close()
flag{a273fdedf3d746e97db9086ebbb195d6}
以上是关于BUUCTF MISC刷题笔记的主要内容,如果未能解决你的问题,请参考以下文章