Contents

NepNep Winter-CAMP(Misc合集)

0x00 前言

从易到难的Misc大汇总,包含了很多常见的考点。

0x01 属性.jpg

右键搞定

0x02 string.jpg

应该是考察strings命令,这里直接010打开,搜索Nep。

0x03 grep.jpg

应该是考察strings命令和grep的配合,上面同样的套路再来一遍。

0x04 aaa.gif

明显看到GIF里插入了一张红色的图,Stegsolve逐帧分析。

flag{he11ohongke},但提交错误,有点儿懵。。

多次尝试后发现是flag{hello hongke}

0x05 lsb.jpg

stegslove查看lsb隐写,发现藏有图片,另存一下。

得到一个二维码,扫一下。

0x06 binwalk,foremost,dd.png

从名字可知要用到binwalk,foremost命令

分离出图片

flag{Nepnep}

0x07 上课认真听了吗?

先追踪udp流,得到flag{254},再追踪http流。

得到flag{340},追踪tcp流,在tcp.stream eq 22时,得到另一部分flag{26}

0x08 pngcheck.png

先用png看一看,检查图片结构是否存在问题,发现在IDAT异常。

用代码解压一下。

import zlib
s = '''
78 9C 4B CB 49 4C AF 4E 4B 36 32 4D 4E 4A 32 4F
B2 30 B5 34 B5 4C 4B 35 30 36 37 B6 30 32 31 4C
B4 34 4B 4A 33 32 4E A9 05 00 E9 E2 0B 5F D0 1C
68
'''
s = s.replace(' ','').replace('\n','')
b = bytes.fromhex(s)
flag = zlib.decompress(b)
print(flag)

flag{fc25cbb7b85959fe03738241a96bf23d}

0x09 westego4.3open (123456).bmp

使用wbs43open工具,输入密码。

得到flag{我跟你讲,这个小甜瓜超甜der~}

0x0A IHDR.png

IHDR块不对劲,CRC校验有问题。

import os
import binascii
import struct

png= open("IHDR.png","rb").read()

for i in range(1024):
    data = png[12:20] + struct.pack('>i',i)+png[24:29]
    crc32 = binascii.crc32(data) & 0xffffffff
    if crc32 == 0x1fcf9e8e:
        print (hex(i)[2:])

更改高度为333

又找了半天,结果发现提示说,flag包含nep,结果没想到flag是flag{你发现了nep},行吧,俺想复杂了。

0x0B lsb(123456).png

上神器。

发现文件头不对劲,找了下,发现题目可能类似这道题。https://blog.csdn.net/fuzz_nancheng/article/details/53384353,下载cloacked-pixel(Win10系统下无法使用,建议在kail使用)

得到flag{6e9fbfe27c40bbad06db30c42c04c4d6}

0x0C bin.txt

打开是一大片01的二进制字符,通过CyberChef转换。

得到一张图片。

0x0D 我是间谍

这题是间谍软件分析,运行后使用wireshark抓包,发现一条异常udp流。

打开后,显示flag{11973526}

0x0E Stegsolve工具使用

上神器,发现二维码。

0x0F 监听消息

追踪Tcp流发现

另存16进制字符,发现是png。

得到半截二维码,改高度。

得到完整的块儿后,贴个定位符。也可在https://merricx.github.io/qrazybox/填充。

0x10 简单流量

hint:关于ssl密钥导入:https://segmentfault.com/a/1190000018746027

按照提示配置环境变量和WireShark,因为pcapng文件名zstuctf,猜测此题flag也是zstuctf,过滤字符串,追踪tls流。

0x11 图片Base64编码

还原得到一张二维码,扫码得到flag。

0x12 Base编码

LJWXQ2C2GN2EGTSIJZWFQ6SGPJMHUTTIMMZWW2DGKE6T2===经过Base32解码得到ZmxhZ3tCNHNlXzFzXzNhc3khfQ==,再经过Base64解码得到flag{B4se_1s_3asy!}

0x13 zip伪加密

改9为0,得到flag{zip_is_funny!}

0x14 常见文件文件头补齐

PNG文件头89 50 4E 47 0D 0A 1A 0A,可以观察到,缺少了4个字节,补全。

成功得到。

0x15 Morse编码

..-. .-.. .- --. ----.-- .. .-.. --- ...- . -.-- --- ..- -----.-转换得到FLAG%u7bILOVEYOU%u7d%u7b就是{%u7d就是}flag{ILOVEYOU}

0x16 16进制查看

0x17 二维码条形码

拼接扫码,得到flag{winter_is_coming}

0x18 LSB图片隐写

可以看出藏了个压缩包,另存一下。

直接解压时失败,文件损坏,winrar修复后解压文件,搜索ctf字符。

0x19 电子文档隐写

0x1A HTML实体编码

\u66\u6c\u61\u67\u7b\u57\u33\u6c\u63\u30\u6d\u65\u21\u7d通过ASCII转成flag{W3lc0me!}

0x1B 键盘密码

ytfvbhn tgbgy hjuygbn yhnmki tgvhn uygbnjm uygbn yhnijm对照键盘连线areuhack

0x1C Foremost && binwalk使用

使用binwalk和foremost

解压压缩包,得到flag{ff17_is_funny!}

0x1D LSB音频隐写

slienteye解码

0x1E pyc反编译

在线反编译pyc,得到python代码。

print 'Your input1 is your flag~'
l = len(input1)
code = []
for i in range(l):
    num = ((ord(input1[i]) + i) % 128 + 128) % 128
    code += chr(num)

for i in range(l - 1):
    code[i] = chr(ord(code[i]) ^ ord(code[i + 1]))

print code
code = ['\x0b', '\x0e', '\t', '\x15', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']

编写解码代码

code = ['\x0b', '\x0e', '\t', '\x15', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']
l=len(code)
for i in range(l-2,-1,-1):
    code[i]=chr(ord(code[i])^ord(code[i+1]))
for i in range(l):
                print(chr((ord(code[i])-i)%128),end='')

运行得到结果:flag{Just_Re_1s_Ha66y!}

0x1F zip口令爆破

拿到flag{zip_is_so_easy!}

0x20 明文攻击

构造一个crc32值与压缩后文件大小一致的readme.txt,这里用一位师傅写的脚本,非常好用。

from zlib import crc32
import random

char='0123456789'
def crc32_f(data):
    return hex(crc32(data)&0xffffffff)[2:10]
length=input('length:')
crc32_=raw_input('crc32:').lower()

while True:
    text=''
    for i in range(length):
        text+=char[random.randint(0,len(char)-1)]
    if crc32_f(text)==crc32_:
        raw_input('find it:'+text)
        exit

0x21 音频频谱隐写

用Audacity打开,显示频谱图。

0x22 MP3 隐写

爷青回,金刚葫芦娃可还行,文件是MP3,首先想到利用MP3Stege,但没有密码010打开后发现藏有东西,分离出jpg和zip。

压缩包是加密的,根据图片的提示,猜测密码是GourdSmallDiamond,解密MP3。

成功解开,打开1.mp3.txt,得到解压密码j7v@8@8QUWG0FWU^

得到MSTSEC{MSTSEC_DINGANN_KEY_IS_GSD},但通不过,改成flag即可。

0x23 音频波形隐写

用Audacity打开,显示波形图,发现异常,设高点为1,低点为0编码

得:110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101共105位,不能整除8,但能整除7,则以7个为一组分开,并且在最高位补0

得:01100110 01101100 01100001 01100111 01111011 01010111 00110000 01010111 00101010 01100110 01110101 01101110 01101110 01111001 01111101,转ASCII码得到flag。

0x24 流量分析(一)

直接搜索flag,结果出来一堆假flag,发现使用ftp协议传了两张图片,存一下。

发现第一张图片有缺陷,是第二张的部分,这里直接分析第二张。

多次尝试后发现是LSB隐写。

0x25 GIF图片隐写

补上文件头。

Stegslove打开逐帧查看,发现字符叠加,肉眼难以辨别,有师傅提到用工具Namo_GIF选择每一帧,然后编辑调色板,将第254帧改为同一个颜色,即可看清每一帧的内容,拼接得到Y2F0Y2hfdGhlX2R5bmFtaWNfZmxhZ19pc19xdW10ZV9zaW1wbGU=

0x26 数字水印隐写

猜测是盲水印,需要找到另一张图片,pngcheck发现IEND后还有数据。

发现又有IHDRchunck块,导出,补全文件头,得到一张和原图一模一样的图。

运行python bwm.py decode half.png half1.png wm.png,得到:

只有一半,找前半段。

0x27 python脚本使用(一)

用pngcheck发现高度有问题。

上python脚本爆破高度,得到232,再用pngcheck,发现异常数据。

找到数据,并进行zlib解压。
1
78 9C 5D 91 01 12 80 40 08 02 BF 04 FF FF 5C 75 29 4B 55 37 73 8A 21 A2 7D 1E 49 CF D1 7D B3 93 7A 92 E7 E6 03 88 0A 6D 48 51 00 90 1F B0 41 01 53 35 0D E8 31 12 EA 2D 51 C5 4C E2 E5 85 B1 5A 2F C7 8E 88 72 F5 1C 6F C1 88 18 82 F9 3D 37 2D EF 78 E6 65 B0 C3 6C 52 96 22 A0 A4 55 88 13 88 33 A1 70 A2 07 1D DC D1 82 19 DB 8C 0D 46 5D 8B 69 89 71 96 45 ED 9C 11 C3 6A E3 AB DA EF CF C0 AC F0 23 E7 7C 17 C7 89 76 67 D9 CF A5 A8 00 00 00 00

得到一串二进制代码,长度为625,想到画25X25的二维码,扫码得到flag。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from PIL import Image
from zlib import *

MAX = 25
pic = Image.new("RGB",(MAX,MAX))
str ="1111111000100001101111111100000101110010110100000110111010100000000010111011011101001000000001011101101110101110110100101110110000010101011011010000011111111010101010101111111000000001011101110000000011010011000001010011101101111010101001000011100000000000101000000001001001101000100111001111011100111100001110111110001100101000110011100001010100011010001111010110000010100010110000011011101100100001110011100100001011111110100000000110101001000111101111111011100001101011011100000100001100110001111010111010001101001111100001011101011000111010011100101110100100111011011000110000010110001101000110001111111011010110111011011"
i=0
for y in range(0,MAX):
    for x in range(0,MAX):
        if(str[i] == '1'):
            pic.putpixel([x,y],(0,0,0))
        else:pic.putpixel([x,y],(255,255,255))
        i = i+1
pic.save("flag.png")

0x28 内存取证

使用volatility,进行镜像分析,知道了系统。详细用法参考:https://www.cnblogs.com/jssi/p/13762308.html

查看进程,发现可疑进程TrueCrypt.exe

dump出来,volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 2012 -D ./2012为nc的进程号,./为保存的路径,用010打开文件,搜索ctf{。