BUUCTF Misc wp大合集(3)

前言

之前做杂项的题比较佛,主要是比赛里面考的大多是脑洞,弯路多,有时候没有hint挺难找到思路,做多了也没什么提升,还是喜欢实打实的脚本题和取证分析。4月25号到五一假期结束那段时间,一口气刷了五页题,实际上考点就那些。小学期搞完了之后,来总结一下知识体系,有些很简单的签到题就一语带过了,用到脚本的题,我会把代码贴上去

题解

第三页

[sqltest]

导出对象→HTTP

这里攻击者使用的是布尔盲注的方式(爆破数据库信息每一个字符的ASCII值)进行攻击

在这里插入图片描述

这一部分是猜解数据库的个数,结果为5(5的ASCII值是53)

在这里插入图片描述

这一部分是在猜解数据库的库名长度

在这里插入图片描述

这一部分是在逐字符猜解数据库的库名,结果为information_schema,tb_flag等等(数据有点乱,其他的看不太出来)

在这里插入图片描述

这一部分是在猜解db_flag库中的表名长度和表名,长度为7,表名为tb_flag

在这里插入图片描述

这一部分是在猜解tb_flag表中的列名,为flag

在这里插入图片描述

这一部分是在猜解flag列中的字符串长度和字符串各位情况,爆破每一位的数据即得flag

[SWPU2019 你有没有好好看网课?]

下载的压缩包解压之后有两个带密码的压缩包,其中一个根据备注可以爆破密码

在这里插入图片描述

在这里插入图片描述

爆破之后有一个文档和一个视频,文档里头的关键信息是5.20和7.11

视频用Kinova打开,在这个区间内的5.66s处发现敲击码(我的Kinova出bug了,截不了图)

在7.36s处发现一段base64,解码之后和前一段敲击码连接得到flag2压缩包的密码wllmup_up_up

打开flag2,把图片拖入winhex,拉到最下面得到flag

在这里插入图片描述

[SUCTF2018 single dog]

把图片拖入winhex,在最下面发现zip的文件头PK

在这里插入图片描述

foremost分离出来得压缩包,解压之后里头一个全是颜文字的txt
在这里插入图片描述

这种加密方式叫aaencode,常用于js中

在这里插入图片描述

[我吃三明治]

把图片拖入winhex,发现这张图片是由两张图片合成的,在拼接处有一串base32

在这里插入图片描述

解码得flag

在这里插入图片描述

[ACTF新生赛2020 NTFS数据流]

下载得到500个txt文件,看了前面几个都说是flag is not here

于是按大小排序

在这里插入图片描述

序号为293的txt内容最多,根据提示是NTFS流隐写

使用工具NtfsStreamsEditor

在这里插入图片描述

[john-in-the-middle]

这个流量包里面传输的HTTP对象比较多,于是全部导出

发现logo.png上面有一条裂缝

在这里插入图片描述

用stegsolve打开scanlines.png时发现一条黑线

在这里插入图片描述

使用Image Combiner功能将两张图进行对比

在这里插入图片描述

[喵喵喵]

zsteg分析图片

在这里插入图片描述

发现在一个通道下隐写了一个文件

用stegsolve打开

在这里插入图片描述

保存为png格式的图片,发现打不开,拖进winhex里头修改16进制数值

在这里插入图片描述

修改文件头之后可以看到是半张二维码

于是猜测可能宽高被修改,用脚本爆破

在这里插入图片描述

修改宽高之后扫描二维码得到一个地址

下载下来解压之后的文档内容和上上个题类似

追踪NTFS得到Python的一个编译文件,反编译之后得到代码

#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import base64

def encode():
    flag = '*************'
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))
    
    return ciphertext[::-1]

ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']


解密脚本如下:

ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']
flag = ""
for i in range(len(ciphertext)):
    s = int(ciphertext[23-i])

    if i % 2 == 0:
        s = s - 10
    else:
        s = s + 10
    print(s)
    char = chr(i ^ s)
    flag = flag + str(char)
print(flag)

[Mysterious]

32位exe文件,打开后是一个对话框,输入小于6位的字符串之后点crack没有反应,大于6位的字符串直接闪退

用IDA反编译

在这里插入图片描述

可以看到调用了DialogBoxParam函数,即对话框的操作

点进去看,到sub_401090这个函数里头

在这里插入图片描述

可知这个函数的功能是读取用户输入的字符串,判断是否满足条件则输出flag

首先字符串长度必须为6,若大于6则直接退出,而输出flag的条件是整型的v10=123,字符型的v12=‘x’,v13=‘y’,v14=‘z’

而v10是将用户输入字符串转换为整型后+1得到的

查看堆栈中变量的情况

在这里插入图片描述

可知输入的字符串为6位,对应的字符串即为str(v10-1)+v12+v13+v14

输入122xyz得到flag

在这里插入图片描述

[ACTF新生赛2020 swp]

包很多,直接导出HTTP对象,这里有一个比较可疑的secrets.zip

在这里插入图片描述

解压这个压缩包,得到一个flag.swp文件,不用复制到linux里面去运行,直接拖到winhex里面往下拉就能找到flag

在这里插入图片描述

[GXYCTF2019 SXMgdGhpcyBiYXNlPw==]

题目中base64字符串解码的结果为Is this base?

猜测base64隐写,直接跑脚本即可

[弱口令]

用winrar打开压缩包,在注释里有一段隐藏的字符串

复制到sublimetext里面全选

在这里插入图片描述

这里是摩斯电码,翻译过来之后是HELL0FORUM,这个就是压缩包的密码

这个图片不是常规的lsb隐写,需要用到脚本cloacked-pixel

根据题目,弱口令猜测为123456

跑脚本得到flag

python lsb.py extract 女神.png flag.txt 123456

[间谍启示录]

foremost分离这个iso文件,在rar里面有一个flag.exe,拖到windows里面运行即得flag(注意在文件夹里面选择查看隐藏项目)

[RoarCTF2019 黄金6年]

视频拖到Kinova里面逐帧查看

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

挨个扫码得到字符串iwantplayctf

把视频拖入winhex,拉到最下面看到一串字符串

在这里插入图片描述

在这里插入图片描述

可以看到这个是一个rar压缩包,保存下来,用刚才那个字符串解压缩得到flag

[小易的U盘]

解压iso文件,autorun.inf中的内容如下

在这里插入图片描述

运行对应的exe文件,发现报错,于是拖到ida里面分析

在这里插入图片描述

flag就在这里,大概的意思是创建一个txt文件,把flag写入

[zip]

这个压缩包里面有很多小压缩包,但都不是伪加密,也不能用无格式文本爆破

由于每个压缩包中包含的文件大小都是4字节,可以考虑通过CRC32爆破获得其中的值

脚本如下(路径因人而异):

import zipfile
import string
import binascii

def CrackCrc(crc):
    for i in dic:
        for j in dic:
            for k in dic:
                for h in dic:
                    s = i + j + k + h
                    if crc == (binascii.crc32(s.encode())):
                        f.write(s)
                        return

def CrackZip():
        for i in range(0,68):
            file = './3/out'+str(i)+'.zip'
            crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
            CrackCrc(crc)

dic = string.ascii_letters + string.digits + '+/='

f = open('./3/out.txt','w')
CrackZip()
print("CRC32碰撞完成")
f.close()

在这里插入图片描述

C4 3D 7B 00 40 07 00是rar文件的结尾,于是加上文件头之后便可以得到压缩包

在注释中可以看到flag

[安洵杯 2019 吹着贝斯扫二维码]

下载的压缩包里头有很多无格式的文件,拖到winhex里面发现文件头是FF D8 FF E0,即jpg格式,于是全部重命名,脚本参考:

import os
 
class BatchRename():
 
    def rename(self):
        path = "文件路径"
        filelist = os.listdir(path)
        total_num = len(filelist)
        i = 0
        for item in filelist:
            if item.endswith('.png'):
                src = os.path.join(os.path.abspath(path), item)
                dst = os.path.join(os.path.abspath(path), ''+str(i)+'.jpg')
                try:
                    os.rename(src, dst)
                    i += 1
                except:
                    continue
        print('total %d to rename & converted %d png'%(total_num, i))
 
if __name__=='__main__':
    demo = BatchRename()
    demo.rename()
————————————————
版权声明:本文为CSDN博主「全部梭哈一夜暴富」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/AI_girl/article/details/124143162

将图片拖入winhex中,拉到最下,看到末尾有一个数字,每个图片的数字都不一样,这个应该就是图片序号

在这里插入图片描述

于是写脚本读取文件的最后两个字节,将其作为文件名重命名文件

import os
from PIL import Image

#目录路径
dir_name = r"./"
#获取目录下文件名列表
dir_list = os.listdir('./')
#print(dir_list)

#从列表中依次读取文件
for file in dir_list:
    if '.jpg' in file:
        f=open(file ,'rb')
        n1 = str(f.read())
        n2 = n1[-3:]	
        #经过测试发现这里要读取最后3个字节,因为最后还有一个多余的字节,不知道是不是转字符串的原因导致在末尾多了一个字符
        #print(file) #输出文件内容
        #print(n2)
        f.close()	#先关闭文件才能重命名,否则会报`文件被占用`错误
        os.rename(file,n2+'.jpg')	#重命名文件

根据图片的序号,用PS拼接到一起,得到一张二维码

扫描结果为

BASE Family Bucket ???
85->64->85->13->16->32

回到flag.zip,用winrar打开看到注释中有一串base

在这里插入图片描述

于是按照顺序反向解码,13指的是rot13

[UTCTF2020 docx]

修改文档的格式为zip,解压之后在word/media路径下找到写有flag的图片
在这里插入图片描述

[WUSTCTF2020 alison_likes_jojo]

解压得到两张图片,把boki.jpg拖到winhex里面,在最下面发现zip文件头,于是foremost分离出来

得到一个有密码的压缩包

尝试爆破

在这里插入图片描述

解压得到一串base64

WVRKc2MySkhWbmxqV0Zac1dsYzBQUT09,三次解码后得到字符串killerqueen

jljy.jpg是outguess隐写,跑脚本

在这里插入图片描述

[WUSTCTF2020 爬]

文件最开始没有格式,拖入winhex查看,文件头是PDF,于是修改后缀
在这里插入图片描述

在WPS图片里面把这个图片删除,看到一串16进制

在这里插入图片描述

转成字符串得flag

在这里插入图片描述

[GUET-CTF2019 zips]

对于222.zip,没有其他的hint,考虑对其进行爆破(6位数字)

之后得到111.zip,拖入winhex查看,发现是由flag.zip和setup.sh拼接而成,前者未加密

在这里插入图片描述

发现setup.sh是伪加密,修改加密位之后可以解压打开
在这里插入图片描述

是将时间戳作为了flag.zip的密码,于是根据创建这个文件的时间换算成时间戳

在这里插入图片描述

密码的格式如下,10位整数+2位小数

在这里插入图片描述

于是进行掩码爆破

在这里插入图片描述

解压得到flag

[从娃娃抓起]

题目提示如下:

在这里插入图片描述

盲猜是在南海画圈的老人说过的话

在这里插入图片描述

前一段是中文电码,后一段是五笔编码

[DDCTF2018 (╯°□°)╯︵ ┻━┻]

先将d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd

转换成16进制数表示的形式,即每两位之前加一个0x,接着每个数减去0x80,最后转ASCII得到flag

我也不知道为什么要减去0x80,有一点点小脑洞

[MRCTF2020 千层套路]

可以先尝试爆破,发现每个压缩包的密码都是其名字,于是写脚本循环解压

import zipfile
path = r"C://Users//hp//Desktop//attachment"

file = r"//0573.zip//0573.zip"
while len(file) != 4:
    pwd = file[2:6]
    print(pwd)
    zip_file = zipfile.ZipFile(path+file)
    zip_list = zip_file.namelist()
    for i in zip_list:
        zip_file.extractall(i, pwd=pwd.encode("utf-8"))
    file = "//"+zip_list[0]+"//"+zip_list[0]
    zip_file.close()

运行到最后可以得到一个写满RGB信息的txt文件qr.txt

写脚本

from PIL import Image

file = open('qr.txt')
MAX = 200

picture = Image.new("RGB", (MAX, MAX))
for y in range(MAX):
    for x in range(MAX):
        string = file.readline()
        picture.putpixel([x, y], eval(string))  # 直接使用eval()可以转为元组
picture.show()

扫描二维码即可得flag

[WUSTCTF2020 girlfriend]

这个音频听起来像电话的拨号音

使用工具dtmf2num来识别

在这里插入图片描述

得到的结果是手机键盘密码,即使用9键时的输入结果

为youaremygirlfriends

[百里挑一]

这个里头传输的图片很多,于是全部导出为HTTP对象,大致看了一遍也没有发现特殊的图片

于是用Exiftool工具(类似于查找图片的备注等信息)

在这里插入图片描述

找到一半,另一半在流114里面,说实话这个挺坑的

在这里插入图片描述

[XMAN2018排位赛 通行证]

base64→栅栏→凯撒

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[安洵杯2019 Attack]

搜索字符串flag,定位到一个TCP流

在这里插入图片描述

base64解码上面的字符串,大致意思是上传下面这个压缩包

可以用foremost分离出来,得到带密码的压缩包
在这里插入图片描述

提示为管理员的秘密,回到流量包里面导出HTTP对象

发现一个dmp文件(在windows系统出现蓝屏等问题时会自动将错误的堆栈信息、用户名密码等保存在dmp文件中)

在这里插入图片描述

使用mimikatz工具来分析(以管理员身份运行)
在这里插入图片描述

用这个密码解压压缩包即可得flag

[SUCTF2018 followme]

直接搜索字符串ctf

在这里插入图片描述

[MRCTF2020 CyberPunk]

不用逆向,直接把系统时间改成2020年9月17日就可以了

在这里插入图片描述

[SUCTF2019 Game]

在src的index.html发现一串"flag",base32解码之后得到fake flag

在这里插入图片描述

将图片用stegsolve打开,发现lsb隐写了

在这里插入图片描述

解码一下

在这里插入图片描述

头部是Salted,于是加密方式应该是AES或3DES,密钥是刚才那个fake flag
在这里插入图片描述

[USB]

把key.ftm拖入winhex,发现zip的文件头

在这里插入图片描述

foremost分离一下,解压得到key.pcap,里面是USB数据包

在这里插入图片描述

使用工具UsbKeyboardDataHacker提取内容

在这里插入图片描述

key{xinan}

对于233.rar,其大小有1581kb,然而能解压出来的只有一个1kb的txt文件,拖入winhex分析

在这里插入图片描述

发现还有一个文件233.png,猜测是校验错误导致解压不出来

RAR文件结构参考:

在这里插入图片描述

于是在刚才这个rar文件中

在这里插入图片描述

0x16这个位置上的块类型应该为0x74,修改之后可以正常解压

将233.png用stegsolve打开,在Blue plane0通道下看到二维码
在这里插入图片描述

扫描二维码得到ci{v3erf_0tygidv2_fc0}

根据最开始得到的key{xinan},猜测是维吉尼亚密码

在这里插入图片描述

最后是栅栏密码

在这里插入图片描述

[UTCTF2020 file header]

拖入winhex,发现缺少png的文件头
在这里插入图片描述

补上去就可以看到flag了

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值