BUUCTF MISC刷题笔记(三)

BUUOJ

  • Misc
    • [MRCTF2020]pyFlag
    • Business Planning Group
    • [ACTF新生赛2020]剑龙
    • [GWCTF2019]huyao
    • [UTCTF2020]File Carving
    • [GUET-CTF2019]soul sipse
    • [watevrCTF 2019]Evil Cuteness
    • [UTCTF2020]sstv
    • [UTCTF2020]spectogram
    • 我爱Linux

Misc

[MRCTF2020]pyFlag

三个图片尾部都有额外数据
BUUCTF MISC刷题笔记(三)_第1张图片
按顺序拼在一起,另存为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)6QrG&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(tG&eOtG%+qG&eLcH9<8sG&wUwGek2)

根据hint可以知道可能有base16、32、48、85

先用Python进行base85解码一次
BUUCTF MISC刷题笔记(三)_第2张图片
再base16解码一次

GU2DKNRUIE2DINJWGQ2TKQJTG42TONJUGQZDGMJVHAZTANBWG44TKQJVGYZTQMZQGU4DGMZUGE3UCNRTGZBDKQJWIM2TSMZTGUZDMNRVIE2DONJWGZATIRBUG42TENSDGYZTMRJTGAZUI===

然后base32

54564A4456455A3757544231583046795A5638305833417A636B5A6C593352665A47566A4D47526C636E303D

再16

TVJDVEZ7WTB1X0FyZV80X3AzckZlY3RfZGVjMGRlcn0=

最后来一下base64

MRCTF{Y0u_Are_4_p3rFect_dec0der}

Business Planning Group

图片结尾有点东西,这个其实是bpg文件,misc入门的misc3考过
BUUCTF MISC刷题笔记(三)_第3张图片
提取出来保存为bpg文件,不过windows下不能直接查看,参考上面那篇博客,下载工具查看

图片里有字符串
BUUCTF MISC刷题笔记(三)_第4张图片

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!
BUUCTF MISC刷题笔记(三)_第5张图片
得到的这个应该是密码,说明hh.jpg应该是某种隐写,测试发现是steghide
在这里插入图片描述
解出的内容如下:

想要flag吗?解出我的密文吧~
U2FsdGVkX1/7KeHVl5984OsGUVSanPfPednHpK9lKvp0kdrxO4Tj/Q==

U2F开头,应该是AES或者DES这种,不过一般需要密码,再去找一下密码的线索,在图片的exif信息中
BUUCTF MISC刷题笔记(三)_第6张图片
BUUCTF MISC刷题笔记(三)_第7张图片
这里解出来让找一下stegosaurus,在github上找到https://github.com/AngelKitty/stegosaurus

这个工具我以前做题的时候用过,详细介绍可以看这篇博客

题目中给的O_O其实是一个pyc文件,改回后缀后使用这个工具解一下就行
在这里插入图片描述

[GWCTF2019]huyao

给了两张一样的图片,应该是盲水印
BUUCTF MISC刷题笔记(三)_第8张图片
盲水印的话我遇到过三种,具体在另一篇博客介绍过

这里试了一下发现是频域盲水印,上脚本

# 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文件
BUUCTF MISC刷题笔记(三)_第9张图片
解压后拿到文件hidden_binary,看了一下发现是ELF文件,果断放进kali里运行一下
BUUCTF MISC刷题笔记(三)_第10张图片
这里遇到一个小问题,但是顺利解决了 ,同时学到一个命令

chmod u+x somefile 只授予这个文件的所属者执行的权限

[GUET-CTF2019]soul sipse

下载得到out.wav,拿Audacity分析下,没啥东西

那应该就是隐写了,一般情况下是mp3stego,不过这题居然是steghide,属实少见

这里没有密码,解出一个txt
在这里插入图片描述

https://share.weiyun.com/5wVTIN3

把文件下载下来,显示异常,原来是文件头有问题
在这里插入图片描述
修复好文件头,图片内容如下
BUUCTF MISC刷题笔记(三)_第11张图片
unicode解码一下
BUUCTF MISC刷题笔记(三)_第12张图片
两个数加起来就是flag:flag{5304}

[watevrCTF 2019]Evil Cuteness

尾部有额外数据,另存为zip
BUUCTF MISC刷题笔记(三)_第13张图片
解压得到无后缀文件abc
BUUCTF MISC刷题笔记(三)_第14张图片
就这…

[UTCTF2020]sstv

又是一个wav,百度一下题目名sstv,发现这玩意有点神奇啊
BUUCTF MISC刷题笔记(三)_第15张图片
这里用到工具QSSTV

在linux下安装:apt install qsstv

安装完打开qsstv,操作一波即可,关于qsstv的具体使用参考这篇文章
BUUCTF MISC刷题笔记(三)_第16张图片

[UTCTF2020]spectogram

直接看频谱图…
BUUCTF MISC刷题笔记(三)_第17张图片

我爱Linux

下载的图片打不开,发现是png的文件头,jpg的文件尾
在这里插入图片描述
定位到jpg尾部之后,发现后面的数据比较奇怪,看了大佬的wp得知这种数据格式是Python的序列化文件
BUUCTF MISC刷题笔记(三)_第18张图片
把这些数据提取出来,保存在1.txt中
BUUCTF MISC刷题笔记(三)_第19张图片
找到一篇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()

得到一些坐标:
BUUCTF MISC刷题笔记(三)_第20张图片
写一手脚本给它画出来:

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()

BUUCTF MISC刷题笔记(三)_第21张图片

flag{
     a273fdedf3d746e97db9086ebbb195d6}

你可能感兴趣的:(misc,#,buuoj)