XCTF-MISC进阶

reverseMe

what-is-this

修改后缀名.zip,继续解压.
使用stegsolve工具的combiner功能将两张图片组合,即可得到flag
在这里插入图片描述

red-green

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

pure_color

在这里插入图片描述

Aesop_secret

在这里插入图片描述
这道题涉及动态图分解,ASE解密(需要解密两次)。
AES是一个对称密码,需要密钥解密。
1.在动态图解析网站,把图片解析出来。
动态图解析网站
在这里插入图片描述
得到密钥ISCC
2,再用010editor打开,最底下看到base64编码
在这里插入图片描述
AES加密解密网站

倒立屋

在这里插入图片描述

a_good_idea

先分离图片得到两张图
进行image combiner
在这里插入图片描述
黑里透红,那就是说明像素的对比度起到决定性作用。

调整曝光度
先保存图片,然后使用Photoshop打开图片,我们在右侧面板打开调整->曝光度:
在这里插入图片描述
曝光度开到最大,出现二维码

2017_Dating_in_Singapore

在这里插入图片描述

simple-transfer

分离pcap
用notepad++打开
在这里插入图片描述

hit-the-cote

我们发现大写的XCTF每个字母之间只隔了四个字母,使用python提取一下,得到flag。

num='cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}'
flag=''
for i in range (3,len(num),5):
    #第0个数是第一个数,步数算到关键字后
    flag+=num[i]
print(flag)

Ditf

拉高图片出密码
分离图片得流量包
流量包搜索flag无果,试试搜索png,jpg,zip。得到base编码,出flag

gif

x=[0b01100110, 0b01101100, 0b01100001, 0b01100111, 0b01111011, 0b01000110, 0b01110101, 0b01001110, 0b01011111, 0b01100111, 0b01101001, 0b01000110, 0b01111101]
b="";
for a in x:
    b+=chr(a);
print(b)

ext3

对挂载的理解
安装mount

sudo apt-get install mount   
mkdir ctf   //新建一个目录 ctf
mount f1fc23f5c743425d9e0073887c846d23 ctf/         //中间的为附件名,再挂载进这个目录里
find / -name flag.txt        在根目录下查找flag.txt,表示在整个硬盘查找
find ctf -name flag.txt      在ctf目录下查找
find . -name flag.txt        在当前目录下查找
umount -f f1fc23f5c743425d9e0073887c846d23//取消挂载

在这里插入图片描述

simpleRAR

文章

base64stego

base64隐写

import base64

# 64个Base64 字符
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

with open('C:\\Users\\韩\\Desktop\\stego.txt', 'rb') as f:#rb按照二进制读取
    bin_str = ""
    flag = ""
    for line in f.readlines():#读取每一行

        # 转换为str类型
        stegb64 = str(line, "utf-8").strip("\n")#以UTF-8编码存储,strip:去除换行符号

        # 解码再编码后,得到隐写前的 Base64编码
        rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")

        # 两次编码的末尾的数据会存在差异,主要是由于 Base64 隐写将一部分二进制码 存到了 在编码过程中会被丢弃的二进制码中
        # 我们要做的就是把被舍弃的那一部分的二进制码找出来并拼接,转换,找出二进制码所表示的字符串

        # 查找每一种编码的最后一个字符的所在位置的差异 => 将会得到 相差的位数,将位数转化成二进制码即可得到被隐写的那一部分的二进制码
        offset = abs(b64chars.index(stegb64.replace('=', '')[-1]) - b64chars.index(rowb64.replace('=', '')[-1]))#红色区域
		#abs返回数字的绝对值 [-1]数组的最后一个
        # 每一行的 ‘=’ 的个数 => 得到补充 0 的位数
        # 一个 ‘=’ 表示 补了 两个二进制位
        # 两个 ’=‘ 表示 补了 四个二进制位
        # 这些二进制位可能存在被隐写的部分
        equalnum = stegb64.count('=')

        # 包含 ‘=’ 时 即 可能包含 Base64 隐写时
        if equalnum:
            # 将差异位 转换为 二进制 => 得到相应的二进制码并进行拼接
            # equalnum * 2 的意思为:添加的二进制位
            bin_str += bin(offset)[2:].zfill(equalnum * 2)#拼接二进制
			#zfill函数主要是为字符串定义长度,如不满足,缺少的部分用0填补
    # 将二进制文件转换为字符串
    for i in range(0, len(bin_str), 8):
        flag += chr(int(bin_str[i:i + 8], 2))
    print(flag)

在这里插入图片描述
解题思路

依次读取每行,从中提取出隐写位。
如果最后没有‘=’,说明没有隐写位,跳过。
如果最后是一个‘=’,说明有两位隐写位,将倒数第二个字符转化为对应的二进制索引,然后取后两位。
如果最后是两个‘=’,说明有四位隐写位,将倒数第三个字符转化为对应的二进制索引,然后取后四位。
将每行提取出的隐写位依次连接起来,每8位为一组转换为ASCII字符,最后不足8位的丢弃。

Misc-pic-again

zsteg

zsteg -a//尝试所有已知的组合
zsteg -e "b1,bgr,lsb,xy" pcat.png > p.exe//导出内容
grep 使用正则在文本中搜索字符
strings在文件中搜索文本
strings '/root/Desktop/1' | grep "hctf"

Banmabanma

我们直接利用条形码在线阅读得到其内容:https://online-barcode-reader.inliteresearch.com/

适合做桌面

用stegolve绿色通道发现二维码
在这里插入图片描述
在这里插入图片描述

Hear-with-your-Eyes

打开二进制发现wav,先修改成wav,不能打开,那就修改成文件夹,用audacity打开wav,换成频谱图得到flag

something in image

strings '/root/Desktop/badimages' | grep -i Flag(-i不分大小写)

在这里插入图片描述

stage1

将图片用strgolve翻出二维码
扫描后得到一串十六进制的数,把它放进010editor,看到是pyc文件,然后进行反编译
python反编译地址

def flag():
    str = [
        65,
        108,
        112,
        104,
        97,
        76,
        97,
        98]
    flag = ''
    for i in str:
        flag += chr(i)
    
    print flag

修改一下

str = [
	65,
        108,
        112,
        104,
        97,
        76,
        97,
        98]
flag = '03F30D0AB6266A576300000000000000000100000040000000730D0000006400008400005A00006401005328020000006300000000030000000800000043000000734E0000006401006402006403006404006405006406006405006407006708007D00006408007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100712B00577C010047486400005328090000004E6941000000696C000000697000000069680000006961000000694C0000006962000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007307000000746573742E7079520300000001000000730A00000000011E0106010D0114014E280100000052030000002800000000280000000028000000007307000000746573742E707974080000003C6D6F64756C653E010000007300000000'
for i in str:
    flag += chr(i)
    
print(flag)

Miscellaneous-200(绘图)

全是三原色数值,可以绘图
在这里插入图片描述
脚本如下

from ast import literal_eval as make_tuple
from PIL import Image
f = open(r'.txt', 'r')
corl = [make_tuple(line) for line in f.readlines()]
f.close()
img0 = Image.new('RGB', (270, 270), '#ffffff')
k=0
for i in range(246):
   for j in range(246):
      img0.putpixel ([i , j], corl[k])
      k=k+1
img0.save("result.png")

心仪的公司

strings可用在pcap.记得进入桌面

strings webshell.pcapng | grep {

hidden massege

UDP协议传输数据包:端口隐写
在这里插入图片描述
0和1转换转字符串

Recover-Deleted-File

在这里插入图片描述

funny_video(音频隐写Matroska+Audition)

文章

再见李华

掩码爆破

普通的数独

数独看着像二维码,将有数字的为1,没数字的为0
用二进制做二维码

# -*- coding:utf-8 -*-
from PIL import Image
x = 45
y = 45

im = Image.new("RGB", (x, y))  # 创建图片
file = open('1.txt', 'r')  # 打开rbg值文件
for i in range(0, x):
    line = file.readline()  # 获取一行
    for j in range(0, y):
        if line[j] == '0':
            im.putpixel((i, j), (255, 255, 255))  # rgb转化为像素
        else:
            im.putpixel((i, j), (0, 0, 0))  # rgb转化为像素
im.show()

普通的Disco

这里用audacity打开,看到二进制
注意数二进制数,是105个,也就是步长为7

s = '110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101'
flag = ''
for i in range(0,len(s),7):
    flag += chr(int('0'+s[i:i + 7],2))
print(flag)
  • int(x,2)代表处理成二进制的样子
    被一个地方卡死了,怎么找到二进制的波形图,直接放大就行
    在这里插入图片描述

小小的PDF

foremost即可

Excaliflag

stegslove在蓝色通道里找到了

神奇的modbus

工业设备消息传输使用modbus协议,过滤一下直接搜,但是它sctf{Easy_Mdbus},中间加个o,sctf{Easy_Modbus}就对了
在这里插入图片描述

embarass

一开始对流量进行分离,但是内容太多了,直接进行搜索
在这里插入图片描述

打野

zsteg看到

2-1

打开发现png头文件不正确89504E47
修改后仍打不开,打开010editor发现没有宽
运行得到准确宽高(crc就是第二行后面)

import struct
import binascii
import os
# 记得加上crc
m = open(r"C:/Users/Lenovo/Desktop/148a3ba22b8541f48f354f3e27f0aa4c.png", "rb").read()
k = 0
for i in range(5000):
    if k == 1:
        break
    for j in range(5000):
        c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j)+m[24:29]
        crc = binascii.crc32(c) & 0xffffffff
        if crc == 0x932f8a6b:
            k = 1
            print(hex(i), hex(j))
            break


halo(base64异或用法)

from base64 import *

b = b64decode('aWdxNDs0NDFSOzFpa1I1MWliT08w')

data = list(b)

for i in range(0, 200):
    key = ''
    for j in range(len(data)):
    	# 注意,python3中已经不用ord去转了
        key += chr(data[j]^i)
    print(key)

有个在线工具,但是需要密钥
在这里插入图片描述
这个看起来较为正常

签到题

SSCTF线上选举美男大赛开始了,泰迪拿着他的密码去解密了,提交花括号内内容(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)

base64解密:ggQ@gQ1fqh0ohtjpt_sw{gfhgs#}

栅栏解密(位移7):ggqht{ggQht_gsQ10jsf#@fopwh}

凯撒密码(位移14):ssctf{ssCtf_seC10ver#@rabit}

MISCall

原理:git信息泄露
下载下来的文件名字太长,先改个名字

root@kali:~/Desktop/CTF# mv d02f31b893164d56b7a8e5edb47d9be5 miscall
root@kali:~/Desktop/CTF# ls
miscall

先来查看文件类型

root@kali:~/Desktop/CTF# file miscall 
miscall: bzip2 compressed data, block size = 900k

发现是个bzip2的压缩包,解压

root@kali:~/Desktop/CTF# bzip2 -d miscall 
bzip2: Can't guess original name for miscall -- using miscall.out 
#无法猜出miscall的原始名称--使用miscall.out
root@kali:~/Desktop/CTF# ls
miscall.out

虽然报了错误,但是可以发现文件名发生了改变

root@kali:~/Desktop/CTF# bzip2 -d miscall 
bzip2: Can't guess original name for miscall -- using miscall.out
root@kali:~/Desktop/CTF# ls
miscall.out

二话不说再看看文件类型

root@kali:~/Desktop/CTF# file miscall.out 
miscall.out: POSIX tar archive (GNU)  #tar文件

继续解压

root@kali:~/Desktop/CTF# tar -xvf miscall.out 
root@kali:~/Desktop/CTF# ls
ctf  miscall.out

发现出现了一个新的目录ctf,进去看看,终于看到flag了,可是是个假的

root@kali:~/Desktop/CTF# cd ctf/
root@kali:~/Desktop/CTF/ctf# ls
flag.txt
root@kali:~/Desktop/CTF/ctf# cat flag.txt 
Nothing to see here, moving along...

什么都没有,怎么办?再仔细看看,发现了隐藏文件.git,是个啥,百度一波,找到了可用的命令,试试看

root@kali:~/Desktop/CTF/ctf# ls -a
.  ..  flag.txt  .git

使用命令查看git记录

root@kali:~/Desktop/CTF/ctf# git log
commit bea99b953bef6cc2f98ab59b10822bc42afe5abc (HEAD -> master)
Author: Linus Torvalds <torvalds@klaava.Helsinki.Fi>
Date:   Thu Jul 24 21:16:59 2014 +0200

    Initial commit

git stash show显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
在这里插入图片描述

git stash apply应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} ,相当于恢复改变的内容

在这里插入图片描述
打开s.py或python s.py得到flag
在这里插入图片描述

就在其中

我们在平时的 Linux 运维管理的时候,经常会进行各种数据备份任务。将数据导出然后打包。通常在安全性要求比较高的环境下,我们可以借助 OpenSSL 工具对打包后的数据进行加密解密,这样能进一步的保障数据的安全性。

文章
在追踪第二个流时发现一些文档,pub.key公钥,推测有私钥
在这里插入图片描述
一个流量文件有多个tcp流,往下翻就行。其他流的查找也是这样
找到私钥,保存为pri.key(一定是.key的后缀)
foremost流量包会得到jpg、pdf、zip,zip解压后得到key.txt,发现是乱码,推测存在加密,用openssl解密

命令:openssl rsautl -decrypt -in key.txt -inkey pri.key -out flag.txt
-in 为要解密的加密文档 -inkey 为密钥 -out 为输出文档 
[具体的详见如何运用OpenSSL 对文件进行加密和解密_petpig0312的博客-CSDN博客_openssl加密文件](https://blog.csdn.net/petpig0312/article/details/79784016)

flag_universe

 流量包中提取文件:1、tcpxtract -f +文件名 2、用NetworkMiner 3、用wireshark 4、foremost -v -i +文件名 5、用Chaosreader
 [文章](https://www.cnblogs.com/micr067/p/14076573.html)

流量包里搜索universe,能找到几个universe.png,应该是从流量包里提取图片,binwalk一下发现确实有图片,但是foremost提取不出来
用NetworkMiner
具体打开方式看大佬文章
之前binwalk分离看到有很多图片,我们把NetworkMiner的图片全部进行zsteg,找到flag

get_the_key.txt

没有后缀,file一下查看类型
mkdir创建一个新目录,mount挂载

mkdir ctfff
mount forensic100 ctfff
cd _forensic100.extracted//进入目录
ls
grep -r key.txt//grep -r 在某一目录下递归查找某一子串,根据题目是查找key.txt
file 1//查看文件,是gzip
gunzip<1//进行解压
umount forensic100//取消挂载

reverse it

拖进010editor里观察,开头是FFD9,结尾是FFD8,全部的十六进制反过来了

a='所有十六进制'
b=[::a]
print(b)

打开图片

3-11

zsteg隐写发现有压缩包
在这里插入图片描述
zsteg -e b1,rgb,lsb,xy 2.png -> 1.zip,提取出来,解压,得到一串base64码,转图片

Become_a_Rockstar

没有后缀,先去查询类型,发现是txt,但是打开后发现一大段没用的话
仔细看后缀是rock.rockstar是一种语言
将rockstar转成python语言
在这里插入图片描述
运行python,我在vscode上面没有运行成功,用的是IDLE

intoU

考点:audacity的采样率
文章

Cephalopod

可以直接搜索flag发现图片打开
binwalk,foremost显示有图片,但是打不开,networkMiner也没有

apt-get install tcpxtract

Tcpxtract -f 文件名//在root里面找

我们的秘密是绿色的

  • OurSecret
    根据题目,用到工具OurSecret。在Unhide域进行解密
    在这里插入图片描述
    密码看图片,绿色的数字
    在这里插入图片描述
  • 暴力破解
    生日是八位纯数字,进行破解
  • 明文攻击
    在这里插入图片描述
    出现两个readme.txt,将readme.txt压缩成zip
  • 栅栏密码
  • 凯撒密码
  • 伪加密
    压缩源文件数据区:
    50 4B 03 04:这是头文件标记(0x04034b50)
    14 00:解压文件所需 pkware 版本
    01 00:全局方式位标记(判断有无加密的重要标志)
    08 00:压缩方式
    5A 7E:最后修改文件时间
    F7 46:最后修改文件日期
    16 B5 80 14:CRC-32校验(1480B516)
    19 00 00 00:压缩后尺寸(25)
    17 00 00 00:未压缩尺寸(23)
    07 00:文件名长度
    00 00:扩展记录长度
    6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500

压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记(0x02014b50)
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密的重要标志,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001

压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度

划重点!
用010hex打开zip文件。
把504B0304后的第3、4个byte改成0000还有
把504B0102后的第5、6个byte改成0000即可破解伪加密。

##识别真假加密
无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00
假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

————————————————
版权声明:本文为CSDN博主「BJFU_vth」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41687289/article/details/82695801

Just-No-One(协议)

得到一个exe

发现是个安装包

在协议发现flag
在这里插入图片描述

心仪的公司

这个搜flag搜不到,只能搜fl,用strings命令搜也行,在wireshark里搜也行,fl4g:{ftop_Is_Waiting_4_y}

labour

打开后没后缀,不知道文章类型,先用nodepad++看里面内容
在这里插入图片描述
打开后发现是可下载的软件ExpertGPS
将文件改后缀名(.gpx)
Use appropriate brackets and underscores to separate words if you succeed–>翻译就是“如果成功,使用适当的方括号和下划线分隔单词 – >”
文章
在这里插入图片描述

4-2

quipqiup分析
在这里插入图片描述
特点就是加密的最后几个单词

low

文章

  • 低位隐写 lsb隐写
  • StegSolve发现二维码被覆盖了,需要像素处理
from PIL import Image

img = Image.open('./pic/low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width, height = img_tmp.size
for w in range(width):
    for h in range(height):
        if pix[w, h] & 1 == 0:
            pix[w,h] = 0
        else:
            pix[w, h] = 255

img_tmp.show()

misc1

每两个分组十六进制,转成十进制后-128(偏移量为128)

再转成ascii码得到flag:DDCTF{9af3c9d377b61d269b11337f330c935f}
python脚本

import re
s = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
num = re.findall('\w{2}' ,s)
flag = ''
for i in num:
   ch = chr(int(i,16)-128)
   flag += ch
print(flag)

隐藏的信息

是八进制数字,用CaptfEncoder(网络安全工具套件)转换,还挺好用的
八进制转ASCII,发现长得像base64

Miscellaneous-300

得到一个压缩包,需要密码,winhex看了下,不是伪加密,爆破发现密码和文件名一模一样,解压得到下一个加密文件,密码依旧和文件名相同,连续好多个,俄罗斯套娃一样,找了个脚本

import zipfile
import re
zipname = "C:\\Users\\86139\\Desktop\\tmp\\"+"47096.zip"
while True:
    if zipname != "C:\\Users\\86139\\Desktop\\tmp\\73168.zip":
        ts1 = zipfile.ZipFile(zipname)
        res = re.search('[0-9]*',ts1.namelist()[0])
        print(res.group())
        passwd = res.group()
        ts1.extractall("C:\\Users\\86139\\Desktop\\tmp\\",pwd=passwd.encode('ascii'))
        zipname = "C:\\Users\\86139\\Desktop\\tmp\\"+ts1.namelist()[0]
    else:
        print("find")

运行到12475.zip时报错了,爆破得到密码是b0yzz

得到mess.wav,仍进AUdacity里,调成频谱图,发现flag,BallsRealBolls

challenge_how_many_Vigenère

维吉尼亚解出密钥和原文
网址
在这里插入图片描述
题解思路

Py-Py-Py

  • Stegosaurus pyc隐写
    Stegosaurus 是一款隐写工具,它允许我们在 Python 字节码文件( pyc 或 pyo )中嵌入任意 Payload 。由于编码密度较低,因此我们嵌入 Payload 的过程既不会改变源代码的运行行为,也不会改变源文件的文件大小。 Payload 代码会被分散嵌入到字节码之中,所以类似 strings 这样的代码工具无法查找到实际的 Payload 。 Python 的 dis 模块会返回源文件的字节码,然后我们就可以使用 Stegosaurus 来嵌入 Payload 了。
git clone https://github.com/AngelKitty/stegosaurus

在这里插入图片描述

快乐肥宅题

下载下来是个swf文件,用PotPlayer打开可以进行每一帧的遍历,玩通关也行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值