[青少年CTF]Misc—Easy by 周末

更新日期:2022年12月6日

青少年CTF训练平台MIsc—Easy部分的WP
有错误请在评论区指出,万分感谢!!!

个人博客:https://www.st1ck4r.top/
(~ ̄▽ ̄)~

0x01 bear

考点:与熊论道解密

在线解密:http://hi.pcmoe.net/

image-20221029002021052

0x02 百家姓

考点:百家姓编码,16进制转文本

使用百家姓在线解码解出来一段16进制文本image-20221029002313177

使用在线16进制转文本进行转换获得flag。

image-20221029002505440

0x03 上号

考点:流量包分析,图片隐写

解压附件后得到一个流量包,打开并导出shanghao.zip

image-20221029012906798

解压shanghao.zip,得到一张图片

image-20221029013027348

使用010editor打开图片,翻到最下面发现字符串,猜测为图片隐写密码。

image-20221029014206623

使用steghide工具将隐写的文件提取出来,即可获得flag。

image-20221029014342234

image-20221029014417732

0x04 17insanity

考点:文件读取

下载附件解压,打开文件即可获得flag。

image-20221029015157138

0x05 17sanity

考点:文件读取

跟上题一样。

image-20221029021107549

0x06 老师说了小明什么?

考点:压缩包密码爆破,伪加密,新佛曰,base64,base32,16进制转文本,凯撒密码,密码字典生成,图片隐写

提示密码为生日,使用压缩包密码爆破工具破解。

image-20221029171351842

解压获得flag1,flag2.zip和flag3.zip

将flag2.zip用010editor打开,修改下面两处数字,去除压缩包伪加密。

image-20221029172249987

解压flag2.zip,获得两个文本。

image-20221029172613309

image-20221029172630743

将flag2.txt进行新佛曰解密

image-20221029172732068

接着依次进行base64,base32,16进制转文本获得第二段flag。

image-20221029172834020

image-20221029172848057

image-20221029172910251

将密码.txt进行凯撒密码解密。

image-20221029173650931

在位移4处获得正确密文。

使用python脚本生成压缩包密码字典。

for i in range(1000):
    if i<10:
        i = '00'+str(i)
    elif 10<=i and i<100:
        i ='0'+str(i)
    else:
        i=str(i)
    with open('1.txt', 'a') as f:
        f.write('qsnctf'+i+"\n")
        f.close()

使用字典进行爆破flag3.zip。

image-20221029174012352

解压后为一张图片,

image-20221029174257016

使用010editor打开,发现压缩包。

image-20221029174408433

将图片后缀改为zip,然后解压打开获得flag3,将三段flag拼起来提交即可。(其实在我打码的地方就能看到flag3,这步就当走个流程)。

image-20221029174615962

0x07 签到

考点:F12

image-20221029180727668

f12查看源代码看到加密文本。

image-20221029180847580

base64解两次码获得flag。

image-20221029180935014

0x08 八卦迷宫

考点:迷宫

将附件解压,得到一张迷宫的图片,用画图工具手工连接,然后将路上的图表和字相对应。

image-20221029181700074

image-20221029182258123

按顺序打出,然后根据题目要求换成全拼,加上图片里的前缀cazy{}提交即可。

0x09 西安加油

考点:流量分析,base64,base64转换binary,拼图

下载附件用wireshark打开流量包,选择导出http对象,按大小排序后可以看到一个格外大的txt文本。

image-20221030001353831

保存后打开发现是base64,在网站进行解码发现是一个压缩包。

image-20221030001704699

image-20221030001649737

将文本导入winhex,运用脚本转换为zip文件。

image-20221030002950453

将zip文件解压得到十几张图片。

image-20221030003131124

使用PS拼图得到flag(这里拿Montage(蒙太奇)好像也能拼,但是我太菜了拼了好几次都成没成功,只能采取笨办法了)。

image-20221030003441072

附上一张原图(希望疫情能早点结束):

9a08ad8361d6480dbc9f5a340e3d3422

0x10 表情包

考点:文件属性查看

下载附件解压后得到十几张末心心P的表情包(?),挨个查看附件属性,就能找到flag(提示:跟Flag有关哦)。

image-20221030005809625

0x11 欢迎

考点:拼图

折磨!!!!直接放原图(某次群聊打电话的截图):

4114834e526178eb9824fb370636bc7

0x12 Attack

考点:流量取证,mimikatz

先对流量包进行分离,得到一个加密的压缩包,提示是administrator的秘密

image-20221030020530755

猜测需要得到administrator的密码,重新分析流量包,导出http对象,将最大的bmp文件导出。

  • Tips:dmp文件是windows系统中的错误转储文件,当Windows发生错误蓝屏的时候,系统将当前内存【含虚拟内存】中的数据直接写到文件中去,方便定位故障原因。

    (里面包含主机用户密码信息)

image-20221030020810809

使用mimikatz分析.dmp文件,双击启动mimikatz.exe(x64(记得添加信任或者关闭杀毒软件,要不然就被杀掉了))并依次执行以下命令:

//提升权限
privilege::debug(网上抄的,不知道有啥用,我这里执行会报错,但是不影响下面的操作)
//载入dmp文件
sekurlsa::minidump lsass.dmp
//读取登陆密码
sekurlsa::logonpasswords full

image-20221030021045584

将administrator的密码作为压缩包密码解压即可得到flag。

image-20221030021331883

0x13 xcel破解

考点:基础文件操作

使用010editor打开往下翻翻就能看到flag…

image-20221030021829374

0x14 FireFox Forensics

考点:火狐取证

太菜了不会做,WP奉上。https://blog.csdn.net/weixin_45791884/article/details/118707262

0x15 Game

考点:base32,LSB,3DES

解压src.zip,在index.html中找到base32数据,解码得到一个假的flag。

image-20221031013057130

image-20221031013126758

接下来分析那张png图片,用stegsolve打开在0通道发现base64数据

image-20221031013259629

看到U2Fsd开头首先想到AES,但AES需要密钥,将之前解码得到的假flag当作密钥进行解密,并未解密出明文,转而想到DES,经过多次尝试,最终发现加密方式为3DES。

image-20221031013932640

image-20221031013543475

0x16 19sanity

考点:Markdown

打开md文件获得flag。

image-20221031014208124

0x17 ez-usb

考点:USB流量分析

解压附件获得一个流量包和exe文件,exe文件打开需要输入密码,先跳过。用wireshark打开流量包,发现是usb流量。

image-20221031021245409

根据题目描述,推测为键盘的usb流量,添加过滤条件**usb.src==“1.8.1”**进行过滤,, 然后导出特定分组并生成一个新的流量包。

image-20221031021327625

image-20221031021338189

image-20221031021404720

使用大佬的usb流量分析脚本进行分析即可获得密码。

image-20221031022639786

打开exe文件输入密码即可获得flag。

image-20221031022835192

下面附上大佬的脚本(github项目地址):

#!/usr/bin/env python

import sys
import os

DataFileName = "usb.dat"

presses = []

normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

def main():
    # check argv
    if len(sys.argv) != 2:
        print("Usage : ")
        print("        python UsbKeyboardHacker.py data.pcap")
        print("Tips : ")
        print("        To use this python script , you must install the tshark first.")
        print("        You can use `sudo apt-get install tshark` to install it")
        print("Author : ")
        print("        WangYihang <wangyihanger@gmail.com>")
        print("        If you have any questions , please contact me by email.")
        print("        Thank you for using.")
        exit(1)

    # get argv
    pcapFilePath = sys.argv[1]
    
    # get data of pcap
    os.system("tshark -r %s -T fields -e usb.capdata 'usb.data_len == 8' > %s" % (pcapFilePath, DataFileName))

    # read data
    with open(DataFileName, "r") as f:
        for line in f:
            presses.append(line[0:-1])
    # handle
    result = ""
    for press in presses:
        if press == '':
            continue
        if ':' in press:
            Bytes = press.split(":")
        else:
            Bytes = [press[i:i+2] for i in range(0, len(press), 2)]
        if Bytes[0] == "00":
            if Bytes[2] != "00" and normalKeys.get(Bytes[2]):
                result += normalKeys[Bytes[2]]
        elif int(Bytes[0],16) & 0b10 or int(Bytes[0],16) & 0b100000: # shift key is pressed.
            if Bytes[2] != "00" and normalKeys.get(Bytes[2]):
                result += shiftKeys[Bytes[2]]
        else:
            print("[-] Unknow Key : %s" % (Bytes[0]))
    print("[+] Found : %s" % (result))

    # clean the temp data
    os.system("rm ./%s" % (DataFileName))


if __name__ == "__main__":
    main()

0x18 Top1

考点:base64

把密文放在cyberchef上自动解密就出来了。

image-20221031023535126

0x19 女神的朋友圈

考点:社工

第一层:

image-20221202201835515

女神的朋友圈

百度识图,获得酒店名称。

image-20221202201945183

第二层:

image-20221202202023221

女神的朋友圈2

依旧是百度识图,找到一篇文章,获得酒吧名

image-20221202203619669

Tips:

​ 由于题目已经告诉我们密码为全英文大写,这里直接爆破也可以。

image-20221202203731415

第三层:

image-20221202203820167

女神的朋友圈3

在图片3.jpg的图片属性中可以看到经纬度。

image-20221202204004076

根据图片的经纬度进行坐标反查(不需要很精细,取第一个数字即可)。

image-20221202204813586

可得出拍摄地为鄂尔多斯市,换成拼音解压即可获得flag。

Tips:

​ 也可利用工具(例如LocaSpaceViewer)提取出图片精确的经纬度。

image-20221202205105975

image-20221202205126694

0x20 剑拔弩张的小红

考点:base64

base64解密后点击加群链接加群,在群文件里放着(真正的签到题!!!)。

image-20221031023913036

欢迎加入青少年CTF:797842833(QQ群)

0x21 从尾看到头

考点:文件逆序,二维码批量扫描,base64,base64换表

下载附件得到一个压缩包,进行解压会报错,用010editor打开压缩包,发现文件头在末尾。

image-20221031193751397

编写脚本进行逆序:

s=open("从尾到头.zip","rb").read()[::-1]
a=open("从尾到头1.zip","wb")
a.write(s)
a.close()

解压逆序后的压缩包,里面有三十多张二维码,手动或者编写脚本进行批量扫描:

import cv2
import pyzbar.pyzbar as pyzbar

for i in range(1,32):
    qrcode = cv2.imread(str(i)+'.png')
    data = pyzbar.decode(qrcode)[0].data.decode("utf-8")

    with open('qrcode.txt','a') as f:
        f.write(data)
        f.close()

查看文本发现为base64密文,进行解密得到一串意义不明的文本,先放到一边。

image-20221031205327689

用010editor打开galf.zip文件,发现情况跟第一个压缩包情况一样都是逆序,复用之前的脚本,修复后解压。

image-20221031220129656

发现需要密码,将之前放到一边的文本作为密码进行解压获得flag.txt,这时候提交显示flag错误,将flag中的内容进行解密得到真正的flag。

image-20221031220621448

image-20221031220638159

0x22 原sher

考点:压缩包密码爆破,图片隐写

解压需要密码,题目提示6位,盲猜密码为qsnctf(拿爆破工具也能爆出来)。

image-20221101012458352

解压出一张图片,用010editor打开,修改图片高度,保存后在此查看图片,发现flag。

image-20221101012712920

image-20221101012733981

0x23 BASE64隐写

考点:base64隐写

解密脚本:

d='''STJsdVkyeDFaR1U4YVc5emRISmxZVzArQ2c9PQ1=
STJsdVkyeDFaR1U4YzNSeWFXNW5QZ289DQ==
STJsdVkyeDFaR1U4WTNOMGNtbHVaejRLDV==
STJsdVkyeDFaR1U4WTNOMFpHbHZQZ289DQ==
STJSbFptbHVaU0J0WVhodUlEazVPUW89Dd==
Q2c9PQ1=
ZFhOcGJtY2dibUZ1WlhOd1lXTmxJSE4wWkRzSw1=
Q2c9PQ0=
WTJoaGNpUmpZVnR0WVhodVhTd2dZMkpiYldGNGJsMDdDZz09DU==
Q2c9PQ1=
YVc1MElHTnRjQ2h6ZEhKcGJtY2dZU3dnYzNSeWFXNW5JR2lwQ2c9PQ2=
ZXdvPQ1=
SUNBZ3lHbG1LR3V1YzJsNlpTZ3BJRDRnWWk1emFYcGxLQ2twQ2c9PQ3=
SUNBZ0lDbWdJb0J5WlhSMWNtNGdNVHNLDb==
SUNBZ0lHVnNjMlVnYVdZb1lTNXphWHBsS0NrZ1BDQmlMbk5wZW1Vb0tTa0sN
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdMVEU3Q2c9PQ0=
SUNBZ0lHVnNjMlVLDd==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JtYjNJb2FXNTBJR2tnUFNBd095QnBJRHdnWVM1emFYcGxLQ2s3SUdrckt5a0sN
SUNBZ2lDQWdJQ2I3Q2c9PQ2=
SUNBZ1lDQWdJQ1FnSUNBZ2FXWW9ZVnRwWFNBOElHSmJhVjBwQ2c9PQ1=
SUNBZ0lDYWdJY0FnSUNBZ0lDYWdJSEpsZEhWeWJpYXRNVHNLDY==
SUNBZ1lDQWdJQ1FnSUNBZ2FXWW9ZVnRwWFNBK1lHSmJhVjBwQ2c9PQ1=
SUNBZ0lDXWdJX0FnSUNBZ0lDXWdJSEpsZEhWeWJpXXhPd289DX==
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lDdWdJd0J5WlhSMWNtNGdNRHNLDd==
SUNBZ0lIMEsN
ZlFvPQ2=
Q2c9PQ1=
ZG05cFpDQnlaWE5sZEdFb2MzUnlhVzVuSUdFcENnPT0N
ZXdvPQ1=
SUNBZ1lHMWxiWE5sZENoallTd3dMSE5wZW1WdlppaGpZU2twT3dvPQ1=
SUNBZ2lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQmhMbk5wZW1Vb2tUc2dhU3NyS1FvPQ2=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR0ZiWVM1emFYcGxLQ2t0TVMxcFhTQXRJQ2N3SnpzSw0=
SUNBZ0lIMEsN
ZlFvPQ2=
Q2c9PQ0=
ZG05cFpDQnlaWE5sZEdJb2MzUnlhVzVuSUdJcENnPT0N
ZXdvPQ3=
SUNBZ1lHMWxiWE5sZENoallpd3dMSE5wZW1WdlppaGpZaWtwT3dvPQ1=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQmlMbk5wZW1Vb0tUc2dhU3NyS1FvPQ0=
SUNBZ0lIc0sN
SUNBZ1lDQWdJQ1JqWWx1cFhTQTlJR1piWWk1emFYcGxLQ2t1TVMxcFhTQXRJQ2N3SnpzSw1=
SUNBZ1lDQWdJQ1F2TDNCeWFXNTBaaWdpSldRaUxHTmlXMmxkS1RzSw1=
SUNBZ0lIMEsN
ZlFvPQ3=
Q2c9PQ3=
YzNSeWFXNW5JR1ZrWkNoemRISnBibWNnWVN3Z2MzUnlhVzVuSUdJcEx5L2xpcURtczVVSw1=
ZXdvPQ2=
SUNBZ0lISmxjMlYwWVNoaEtUc3ZMK2FLaXVhdmorUzRnT1M5amVXdG1PZWFoT1d0bCtlc3B1V1BtT2FJa09hVnNPV3RseXpsdWJia3VKVG1pb3JtbGJEbnU0VGxqNDNvdjRmbW5hWGt2ci9rdW83bGtJN3BuYUxrdUkzbGtJemt2WTNtbGJEbm03amxpcUFLDW==
SUNBZ0lISmxjMlYwWWloaUtUc0sN
SUNBZ0lHWnZjaWhwYm5RZ2FTTTlJREE3SUdrZ1BDTnRZWGh1T3lCcEt5c3BDZz09DT==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR05oVzJsZElDc2dZMkpiYVYwN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0ErUFNBeUtYc0sN
SUNBZ0lDTWdJT0FnSUNBZ1kyRmJhU3N4WFNBclBTTXhPd289DT==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhVjBnTFQwZ01qc0sN
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lIMEsN
SUNBZ0lHSnZiMndnWm14aFp5QTlJSFJ5ZFdVN0NnPT0N
SUNBZ3lITjBjbWx1WnlCaklEMGdJaUk3Q2c9PQ3=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJRzFoZUc0Z0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmlobWJHRm5JQ1ltSUdOaFcybGRJRDA5SURBcENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0FoUFNBd0tRbz0N
SUNBZ0lDcWdJc0FnSUNBZ1pteGhaeUE5SUdaaGJITmxPd289Dc==
SUNBZ2lDQWdJQ2JqSUNzOUlDaGpZVnRwWFNBcklDY3dKeWs3Q2c9PQ2=
SUNBZ0lDQWdJQ0F2TDNCeWFXNTBaaWdpSldRaUxHTmhXMmxkS1RzSw0=
SUNBZ0lIMEsN
SUNBZ0lHbG1LR1pzWVdjcENnPT0N
SUNBZ1lDQWdJQ1J5WlhSMWNtNGdJakFpT3dvPQ1=
SUNBZ0lHVnNjMlVLDX==
SUNBZ0lDdWdJd0J5WlhSMWNtNGdZenNLDd==
ZlFvPQ0=
Q2c9PQ0=
YzNSeWFXNW5JRzFwYm5Vb2MzUnlhVzVuSUdFc0lITjBjbWx1WnlCaUtTOHY1WWVQNXJPVkNnPT0N
ZXdvPQ0=
SUNBZ0lHbHVkQ0J6YVdkdUlEMGdNRHNLDQ==
SUNBZ0lHbG1LR050Y0NoaExDQmlLU0E5UFNBdE1Ta3ZMMkhrdUszbHVwVG9yNlhsclpqb3ZvUGxwS2ZubW9UcGdxUGt1S3JtbGJBSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0J6YVdkdUlEMGdNVHNLDQ==
SUNBZ0lDQWdJQ0J6ZEhKcGJtY2dkR1Z0Y0NBOUlHRTdDZz09DQ==
SUNBZ0lDQWdJQ0JoSUQwZ1lqc0sN
SUNBZ0lDQWdJQ0JpSUQwZ2RHVnRjRHNLDQ==
SUNBZ0lIMEsN
SUNBZ0lISmxjMlYwWVNoaEtUc0sN
SUNBZ0lISmxjMlYwWWloaUtUc0sN
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQnRZWGh1T3lCcEt5c3BDZz09DQ==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0E4SUdOaVcybGRLWHNLDQ==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhU3N4WFNBdFBTQXhPd289DQ==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhVjBnS3owZ01qc0sN
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR05oVzJsZElDMGdZMkpiYVYwN0NnPT0N
SUNBZ0lIMEsN
SUNBZ0lHSnZiMndnWm14aFp5QTlJSFJ5ZFdVN0NnPT0N
SUNBZ0lITjBjbWx1WnlCa0lEMGdJaUk3Q2c9PQ0=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJRzFoZUc0Z0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmlobWJHRm5JQ1ltSUdOaFcybGRJRDA5SURBcENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0FoUFNBd0tRbz0N
SUNBZ0lDQWdJQ0FnSUNBZ1pteGhaeUE5SUdaaGJITmxPd289DQ==
SUNBZ0lDQWdJQ0JrSUNzOUlDaGpZVnRwWFNBcklDY3dKeWs3Q2c9PQ0=
SUNBZ0lDQWdJQ0F2TDNCeWFXNTBaaWdpSldRaUxHTmhXMmxkS1RzSw0=
SUNBZ0lIMEsN
SUNBZ0lHbG1LR1pzWVdjcENnPT0N
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdJakFpT3dvPQ0=
SUNBZ0lHVnNjMlVLDQ==
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaRHNLDQ==
ZlFvPQ0=
Q2c9PQ0=
YzNSeWFXNW5JRzExYkNoemRISnBibWNnZUN3Z2MzUnlhVzVuSUhrcEx5OXo1TGk2NTZ5bTVZKzM1TDJOQ2c9PQ0=
ZXdvPQ0=
SUNBZ0lHbHVkQ0JzWlc1NElEMGdlQzV6YVhwbEtDazdDZz09DQ==
SUNBZ0lHbHVkQ0JzWlc1NUlEMGdlUzV6YVhwbEtDazdDZz09DQ==
SUNBZ0lHbG1LR3hsYm5nZ1BUMGdNU2tLDQ==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0F2TDJOdmRYUThQSGc4UENJZ0lDQWlQRHg1UER4bGJtUnNPd289DQ==
SUNBZ0lDQWdJQ0JwWmloNElEMDlJQ0l4SWlBbUppQjVJRDA5SUNJeElpa0sN
SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNJeElqc0sN
SUNBZ0lDQWdJQ0JsYkhObENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNJd0lpQTdDZz09DQ==
SUNBZ0lIMEsN
Q2c9PQ0=
SUNBZ0lDOHZjSEpwYm5SbUtDSWxaQzB0SldSY2JpSXNiR1Z1ZUN4c1pXNTVLVHNLDQ==
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaExDQmlMQ0JqTEdRN0NnPT0N
SUNBZ0lHRWdQU0I0TG5OMVluTjBjaWd3TENCc1pXNTRMeklwT3dvPQ0=
SUNBZ0lHSWdQU0I0TG5OMVluTjBjaWhzWlc1NEx6SXNJR3hsYm5ndk1pazdDZz09DQ==
SUNBZ0lHTWdQU0I1TG5OMVluTjBjaWd3TENCc1pXNTVMeklwT3dvPQ0=
SUNBZ0lHUWdQU0I1TG5OMVluTjBjaWhzWlc1NUx6SXNJR3hsYm5rdk1pazdDZz09DQ==
SUNBZ0lIQnlhVzUwWmlnaUpXUXRMU1ZrTFMwbFpDMHRKV1F0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMU1ZrTFNWa1hHNGlMR0V1YzJsNlpTZ3BMQ0JpTG5OcGVtVW9LU3dnWXk1emFYcGxLQ2tzSUdRdWMybDZaU2dwTENCNExuTnBlbVVvS1N3Z2VTNXphWHBsS0NrcE93bz0N
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFBEd2lJQ0k4UEdJOFBDSWdJanc4WXp3OElpQWlQRHhrUER4bGJtUnNPd289DQ==
SUNBZ0lITjBjbWx1WnlCaFl5QTlJRzExYkNoaExDQmpLVHNLDQ==
SUNBZ0lITjBjbWx1WnlCaVpDQTlJRzExYkNoaUxDQmtLVHNLDQ==
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFl6dzhJaUFpUER4aVpEdzhaVzVrYkRzSw0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaFlpQTlJRzFwYm5Vb1lTd2dZaWs3THk5aExXSUsN
SUNBZ0lITjBjbWx1WnlCalpDQTlJRzFwYm5Vb1pDd2dZeWs3Q2c9PQ0=
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFlqdzhJaUFpUER4alpEdzhaVzVrYkRzSw0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaFltTmtJRDBnYlhWc0tHRmlMQ0JqWkNrN0NnPT0N
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFltTmtQRHhsYm1Sc093bz0N
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCbWFYSnpkQ0E5SUdGak93bz0N
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQW9iR1Z1ZUNrN0lHa3JLeWtLDQ==
SUNBZ0lDQWdJQ0JtYVhKemRDQXJQU0FpTUNJN0NnPT0N
SUNBZ0lDOHZZMjkxZER3OFlXTThQQ0lnTFMwdExTMWhZeTB0TFMwZ0lqdzhabWx5YzNROFBHVnVaR3c3Q2c9PQ0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCelpXTnZibVFnUFNCaFpHUW9ZV0pqWkN3Z1lXTXBPd289DQ==
SUNBZ0lITmxZMjl1WkNBOUlHRmtaQ2h6WldOdmJtUXNJR0prS1RzSw0=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQW9iR1Z1ZUM4eUtUc2dhU3NyS1FvPQ0=
SUNBZ0lDQWdJQ0J6WldOdmJtUWdLejBnSWpBaU93bz0N
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCbWFXNGdQU0JoWkdRb1ptbHljM1FzSUhObFkyOXVaQ2s3Q2c9PQ0=
SUNBZ0lISmxkSFZ5YmlCaFpHUW9abWx1TENCaVpDazdDZz09DQ==
Q2c9PQ0=
ZlFvPQ0=
Q2c9PQ0=
YVc1MElHMWhhVzRvZG05cFpDa0sN
ZXdvPQ0=
SUNBZ0lITjBjbWx1WnlCNExDQjVPd289DQ==
SUNBZ0lIQnlhVzUwWmlnaTZLKzM2TDZUNVlXbDVMaWs1TGlxNUxxTTZMK2I1WWkyNXBXdzVhMlhPaUFpS1RzSw0=
SUNBZ0lHTnBiajQrZUQ0K2VUc0sN
SUNBZ0lITjBjbWx1WnlCaGJuTWdQU0J0ZFd3b2VDd2dlU2s3Q2c9PQ0=
SUNBZ0lHTnZkWFE4UEdGdWN6c0sN
ZlFvPQ0=
'''
e=d.splitlines()
binstr=""
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in e :
    if i.find("==")>0:
        temp=bin((base64.find(i[-3])&15))[2:]
    #取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
    
        binstr=binstr + "0"*(4-len(temp))+temp 
        #二进制字符补高位0后,连接字符到binstr
        
    elif i.find("=")>0:
        temp=bin((base64.find(i[-2])&3))[2:]
        #取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
        
        binstr=binstr + "0"*(2-len(temp))+temp 
        #二进制字符补高位0后,连接字符到binstr
        
str=""
for i in range(0,len(binstr),8):
    str=str+chr(int(binstr[i:i+8],2)) 
    #从左到右,每取8位转换为ascii字符,连接字符到字符串
    
print(str) 

0x24 key

考点:snow隐写

打开flag文本,全选后发现存在空白部分,猜测为snow隐写(在一同解压出来的那种图片的属性中也能找到提示为snow)。

image-20221101122637966

用snow隐写工具进行解密,出现乱码,猜测需要密码。

image-20221101122838508

返回文本仔细阅读,找到key1,再次进行解密,获得flag。

image-20221101123002570

image-20221101123045886

0x25 末心的礼物

考点:binwalk,pyc反编译

下载文件解压得到一个exe执行文件,但这题不是考的逆向。

image-20221201190521931

将exe文件用binwalk进行分解,可以获得一个可疑的pyc文件。

image-20221201190336998

image-20221201190541843

利用在线网站进行pyc反编译即可获得flag。

image-20221201190651715

0x26 明日方舟

考点:steghide隐写,base64换表

在图片属性中看到出题人名字。

image-20221202210445970

使用steghide分析,密码为出题人名字。

image-20221202210529043

获得flag.txt。

image-20221202210556415

向下翻找,在1200行找到hint。

image-20221202210629864

丢到cyberchef解密。

image-20221202210705575

在Q群查看出题人账号。

image-20221202211228170

0x27 英雄联盟

考点:社工,英雄联盟赛事

yxlm

开局一张图,做题全靠搜。

经常看英雄联盟比赛应该知道这个女主持人骆歆,使用谷歌识图进行识别。

image-20221202223433602

看日期知道是2021年8月13日的某一场比赛,百度搜索骆歆。

image-20221202224334034

根据日期推断为夏季赛,继续搜索。

image-20221202224436992

在常规赛第九周找到8月3日,在bilibili搜索该场比赛。

image-20221202224612890

在8分17秒处看到该图片动作,确定前半个flag。

后面的就依次查看即可,在8月6日19:00的比赛上再次看到骆歆。

image-20221202224923777

确定后半flag。

0x28 索马里海盗

考点:压缩包爆破,掩码攻击

和ctfshow的2022七夕杯Misc部分的海盗的密码题目类似(指除了压缩包密码不同以外其它都一样),可以直接搜索WP进行参考。

下载文件获得一个加密的压缩包,根据提示获得密码线索。

image-20221201195029292

百度搜索索马里的ip

image-20221201195151192

使用archpr工具的掩码攻击进行爆破。

image-20221201205412940

解压后获得一个flag.zip,点击查看提示压缩包损坏。

image-20221201205611108

使用010Editor打开即可获得flag。

image-20221201205653572

0x29 caesar

考点:凯撒密码

image-20221201210129938

网站在线解密,位移数为1。

image-20221201205903652

0x30 just_a_rar

考点:压缩包爆破

下载文件用archpr工具爆破密码。

image-20221201210341395

解压后获得一张图片,查看图片属性获得flag。

image-20221201211601314

0x31 EZjoanDaemen

考点:zip伪加密,snow隐写,docx文件隐写,lsb隐写,aes解密

下载题目压缩包,解压发现需要密码,使用010Editor打开,发现压缩包为伪加密。

image-20221201212245347

image-20221201212306003

修改01为00,解压这个压缩包,获得docx文件。

image-20221201212354614

在末尾处发现空白行,猜测为snow隐写,将空白部分复制出来并保存为文本,使用snow工具进行解密。

image-20221202153325863

image-20221202153527442

获得aes_key,暂时没用。

将docx文档后缀改为zip并解压。

image-20221202153718475

在word\media\images路径下发现一堆图片。

image-20221202153830948

用Stegsolve工具打开一张图片,在最低有效位下发现密文。

image-20221202155653990

根据之前找到的aes_key猜测为aes加密,使用在线网站进行解密。

image-20221202155813727

获得一个字符f,接着依次解密前几张图片,结果为:flag{

编写批量提取解密脚本:

'''
 # @Author: https://github.com/librauee/Steganalysis/blob/master/LSB/get_info.py
 # @Date: 2022-12-02 16:08:22
 # @LastEditors: St1ck4r
 # @LastEditTime: 2022-12-02 17:13:07
 # @link: https://www.st1ck4r.top
'''

from PIL import Image
from Crypto.Cipher import AES
import base64

# aes密钥
password = b'welcome_to_misc!'

# AES ECB模式解密
def aesecb(c):
    en_text = base64.b64decode(c) #需要加密的内容,bytes类型
    aes = AES.new(password,AES.MODE_ECB) #创建一个aes对象
    # AES.MODE_ECB 表示模式是ECB模式
    den_text = aes.decrypt(en_text) # 解密密文
    return den_text.decode().strip(b'\x00'.decode()) # den_text.decode():转化为str类型,strip(b'\x00'.decode()):去除末尾生成的\x00


def mod(x,y): 
    return x%y

def toasc(strr):
    return int(strr, 2)
               
#le为所要提取的信息的长度,str1为加密载体图片的路径,str2为提取文件的保存路径
def func(le,str1,str2): 
    b="" 
    im = Image.open(str1)
    lenth = le*8
    width,height = im.size[0],im.size[1]
    count = 0
    for h in range(height): 
        for w in range(width):
            #获得(w,h)点像素的值
            pixel = im.getpixel((w, h))
            #此处余3,依次从R、G、B三个颜色通道获得最低位的隐藏信息 
            if count%3==0:
                count+=1 
                b=b+str((mod(int(pixel[0]),2))) 
                if count ==lenth:
                    break
            if count%3==1:
                count+=1
                b=b+str((mod(int(pixel[1]),2)))
                if count ==lenth:
                    break
            if count%3==2: 
                count+=1
                b=b+str((mod(int(pixel[2]),2)))
                if count ==lenth:
                    break
        if count == lenth:
            break
    # 提取隐藏信息
    c=''
    for i in range(0,len(b),8):
        #以每8位为一组二进制,转换为十进制            
        stra = toasc(b[i:i+8]) 
        #将转换后的十进制数视为ascii码,再转换为字符串写入到文件中
        #print((stra))
        c+=chr(stra)
    
    # 写入指定文件
    with open(str2,"a",encoding='utf-8') as f:
        f.write(aesecb(c))
        f.close()

def main():   
    #文件长度 
    le = 24
    #含有隐藏信息的图片
    for i in range(1,167): 
        new = "new_"+str(i)+".png" 
    #信息提取出后所存放的文件
        get_info = "flag.txt"
        func(le,new,get_info)
    print("完成信息提取!")


if __name__=='__main__':
    main()

获得base64加密的flag。

image-20221202171545916

将flag的值经过6次base64解密即可获得最终flag。

image-20221202171814401

0x32 好怪哦

考点:数据逆置,文件头修补,宽高隐写

下载文件解压获得一个压缩包,解压时提示损坏,使用010editor打开发现数据逆置。

image-20221202172254920

编写修复脚本:

a = open('fuck.zip', 'rb')
aa = a.read()
aaa = aa[::-1]

b = open('flag.zip', 'wb')
b.write(aaa)

a.close()
b.close()

解压flag.zip文件,获得一张png图片,但是无法查看,使用010editor查看发现缺少文件头。

image-20221202173342177

将png文件头(89 50 4e 47)补上去.

image-20221202173436563

查看图片发现高度显示不正确。

image-20221202174736917

修改图片高度(不用必须改正确,只要能把文字显示全即可)。

image-20221202174921249

再次查看图片即可获得flag。

image-20221202174949921

0x33 三体

考点:兽音解密,base58,16进制转字符,凯撒密码

根据题目提示猜测压缩包密码为《三体》的英文threebody,解压后获得flag密文,然后依次解密。

兽音解密

image-20221202184035192

base58

image-20221202183858161

16进制转字符

image-20221202183848768

凯撒密码

image-20221202183834511

0x34 excel骚操作

考点:excel,汉明码

懒得写了,直接看WP吧( ̄︶ ̄)

https://blog.csdn.net/qq_43871179/article/details/118310357

0x35 gakki

考点:文件分离、压缩包爆破,字频统计排序

下载文件解压出一张图片。

image-20221202192024773

使用binwalk分离,得到一个加密压缩包。

image-20221202192110123

使用archpr工具爆破密码。

image-20221202192307522

解压获得加密文本,多次尝试解密无效后,猜测为字频排序,百度随便找个脚本修改运行即可。

list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
cipher = open('./flag.txt').read()

result = {}
for i in list:
	counts = cipher.count(i)
	i = '{0}'.format(i)
	result[i] = counts

res = sorted(result.items(),key=lambda item:item[1],reverse=True)
for data in res:
	print(data)

for i in res:
	flag = str(i[0])
	print(flag[0],end="")

0x36 再签到一次

青少年ctf论坛注册回复帖子即可。

image-20221202193716529

0x37 Can_You_Find_Me

考点:图片隐写

010editor查看图片。

image-20221202201224724

0x38 你会运算吗

考点:16进制位移,0宽隐写,steghide密码爆破

下载附件得到一张图片和一个需要密码的压缩包。

image-20221206193940279

尝试打开图片,未果,使用010editor查看。

image-20221206185413941

取反:

f=open("1.jpg",'rb')
f1=f.read()#二进制形式
with open('flag.jpg','wb') as f2:
    for i in f1:
        if i==0:
            f2.write(bytes([0x0]))
        #这里的b是int形式,要转换成bytes时,使用bytes(),且里面的内容需要加[]
        else:
            f2.write(bytes([0x100-i]))
f.close()
f2.close()

打开生成的图片,获得压缩包密码。

image-20221206193608522

解压后获得两张图和一个txt文本。

image-20221206193804320

3.jpg还是运用刚才的16进制取反脚本即可获得后半段flag。

image-20221206193911823

查看txt文本,提示给出密码,但是需要爆破,猜测为大小写组合爆破。

image-20221206194122788

推测图片2使用steghide隐写。

编写爆破脚本:

import os

def all_casings(input_string):
    if not input_string:
        yield""
    else:
        first = input_string[:1]
        if first.lower() == first.upper():
            for sub_casing in all_casings(input_string[1:]):
                yield first + sub_casing
        else:
            for sub_casing in all_casings(input_string[1:]):
                yield first.lower() + sub_casing
                yield first.upper() + sub_casing

if __name__ =='__main__':
    for x in all_casings("qsnctf"):
        os.system("steghide extract -sf 2.jpg -p "+x)
        print(x)

image-20221206194406507

查看flag1.txt。

image-20221206194456765

发现0宽隐写。

image-20221206194620312

使用在线网站提取,获得前半部分flag。

0宽解密:http://330k.github.io/misc_tools/unicode_steganography.html

image-20221206194727003
此文章不定时更新…

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值