ctrl+shift+c 打开禁用f12的网页的devtools

零宽隐写和base64隐写

零宽隐写

当给一个txt文件,或者题目有0/零之类的词就要开始考虑零宽隐写了,零宽隐写主要考虑的是使用的字符,在cyber里面,通过escape unicode characters可以查看unicode编码

推荐这个

通过观察编码即可确定需要勾选的项

base64隐写


import base64
def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s1)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def solve_stego():
    with open('.\字频统计.txt', 'rb') as f:
        file_lines = f.readlines()
    bin_str=''
    for line in file_lines:
        steg_line = line.decode().replace('\r\n', '')#看具体情况,可能是\r\n也可能是\n
        norm_line = base64.b64encode((base64.b64decode(line))).decode()
        diff = get_base64_diff_value(steg_line, norm_line)
        pads_num = steg_line.count('=')
        if diff:
            bin_str += bin(diff)[2:].zfill(pads_num * 2)
        else:
            bin_str += '0' * pads_num * 2
    print (bin_str)
    res_str = ''
    for i in range(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i+8], 2))
    print (res_str)

if __name__=='__main__':
    solve_stego()

常见文件头

文件类型 文件头 文件尾
JPEG (jpg) FFD8FFE1 FF D9
PNG (png) 89504E47
GIF (gif) 47494638 01 01 00 3B
TIFF (tif) 49492A00
Windows Bitmap (bmp) 424D
CAD (dwg) 41433130
Adobe Photoshop (psd) 38425053
Rich Text Format (rtf) 7B5C727466
XML (xml) 3C3F786D6C
HTML (html) 68746D6C3E
Email [thorough only] (eml) 44656C69766572792D646174653A
Outlook Express (dbx) CFAD12FEC5FD746F
Outlook (pst) 2142444E
MS Word/Excel (xls.or.doc) D0CF11E0
MS Access (mdb) 5374616E64617264204A
WordPerfect (wpd) FF575043
Postscript (eps.or.ps) 252150532D41646F6265
Adobe Acrobat (pdf) 255044462D312E
Quicken (qdf) AC9EBD8F
Windows Password (pwl) E3828596
ZIP Archive (zip) 504B0304
RAR Archive (rar) 52617221
Wave (wav) 57415645
AVI (avi) 41564920
Real Audio (ram) 2E7261FD
Real Media (rm) 2E524D46
MPEG (mpg) 000001BA
MPEG (mpg) 000001B3
Quicktime (mov) 6D6F6F76
Windows Media (asf) 3026B2758E66CF11
MIDI (mid) 4D546864
MP3 FFFB
zlib 78 01 or 78 9C or 78 DA

mp3 文件隐写

MP3Stego提取

.\Decode.exe -X -P 1111 hidden.WAV

-X是提取隐藏文件

-P是密码

111为文件隐藏时的密码

 hidden.WAV是要提取的文件

留个教程

留个下载地址

图片隐写

binwalk检查
binwalk -e 分离
或者
foremost 分离

像素提取

在正常图片中,每固定像素点间距插入像素,使用python脚本提取

from PIL import Image

original_image = Image.open('arcaea.png')

new_width = original_image.width // 12  #每12个像素点改变一个像素
new_height = original_image.height // 12

new_image = Image.new("RGB",(new_width,new_height))

for x in range(new_width):
    for y in range(new_height):
        pixel = original_image.getpixel((x *12,y*12))
        new_image.putpixel((x,y),pixel)

new_image.save("flag.png")

zsteg一把梭

zsteg可以检测PNG和BMP图片里的隐写数据

zsteg flag.png

zsteg -a flag.png #一把梭

高度改写

内存取证

使用volatility 对raw等格式进行分析

volatility -f <文件名> --profile=<配置文件> <插件> [插件参数]

eg: .\volatility_2.6_win64_standalone.exe -f E:\Desktop\放题\计算机取证\1.dmp --profile=Win7SP1x64 pslist
  • <插件>中可以使用
    imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
    pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
    pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
    psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
    cmdscan:可用于查看终端记录
    notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
    filescan:扫描所有的文件列表
    linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’
    dumpfiles:导出某一文件(指定虚拟地址)
    需要指定偏移量 -Q 和输出目录 -D
    memdump:提取出指定进程,常用foremost 来分离里面的文件
    需要指定进程-p [pid] 和输出目录 -D
    editbox:显示有关编辑控件(曾经编辑过的内容)的信息
    screenshot:保存基于GDI窗口的伪截屏
    clipboard:查看剪贴板信息
    iehistory:检索IE浏览器历史记录
    systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
    hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
    mftparser:恢复被删除的文件
    svcscan:扫描 Windows 的服务
    connscan:查看网络连接
    envars:查看环境变量
    dlllist: 列出某一进程加载的所有dll文件
    hivelist: 列出所有的注册表项及其虚拟地址和物理地址
    timeliner: 将所有操作系统事件以时间线的方式展开

  • 出题点:
    对ie浏览记录进行分析

ntfs 数据流隐写

参考

使用 labs.exe 进行检测
指令:

lads.exe /S #检测当前目录

lads.exe <文件夹> /S #检测这个目录和子目录

eg: lads.exe test /S


notepad 查看文件

编码猜测

使用010editor 更改字符集

010editor

pdf bmp txt htm 文件隐写

使用wbstego4.3open隐写,一般肉眼无法判断,只能靠试

使用wbstego4.3open解码和加密

misc密码加密

仿射密码 affine

仿射密码需要两个密码,并且其中一个为1,3,5,7,9,11,15,17,19,21,23,25中的一个,另一个0~25。且flag格式正确但是字母被替换,一般仿射密码的两个密码不会直接给出,可能以方程式等方式给出
在线解密

zlib文件解压

三种文件头

文件头 压缩方式
78 01 No Compression/low
78 9C Default Compression
78 DA Best Compression

解压python脚本

import zlib
import binascii

id='789cad50cb92a2500cfd2016c2151516bd08efdb80c54304d979012ff2101015e4eb1b6aa6bb66379b4ea59293e4544e2a3e078a24b900b383520e153bf6fc280a219d6b9587252ee184c432ce9c8c5ec0b997e92db7754489b05d8161b43eabdb9d7cf7c41e71c4e1d77e5767bdc534aede6cd8aa98f809278f6ec4fdc138a20dc3d50775f7d21291561b1c5c2fbb0bb7ba1bb835ba6a77eb4c8730c8dede3ceb39e4815093d5c04916b87805ffbb535e867f0cff20a920c8ab640af4bb01d20cb59742f9e8cc0eaa40a17ee4e2fd008737c86764a0872d056aaf49f42f7f5e7d5cb0312ce209680f378bbc86209eda577e1db9ace9143c83cd5cec0cd45ce65a71db20a9b5220e3ff313eaa9a973af64edd2a43ecebd0d8bf57d4ef481125d9b52b9dc2a6e43b11ab7440f282ec6218bf64d1c8e3d9e80c1d785573d631f464b965a7205818462998663e550d6c432d07fb5c3faf826acd7a675359d43f1e9459f6fb2c6db1fcef997b20f82e54bc329da4f2912dfb10c3bf3fb17001f5f8a8cc192'
result = binascii.unhexlify(id)
print(result)
result = zlib.decompress(result)
print(result)

即可解压

常见编码

UUencode 编码

解码

特征:所有字符看起来像乱码,但都是可打印字符;如果有多行,那么除了最后一行,都以“M”开头

社工题

经纬度转换

网站

PNG CRC 检验

贴代码算就完了

import binascii
import struct

# \x49\x48\x44\x52\x00\x00\x01\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00
crc32key = 0x121B804D

for i in range(0, 65535):
    for j in range(0, 65535):
        width = struct.pack('>i', j)
        height = struct.pack('>i', i)
        data = b'\x49\x48\x44\x52' + width + height + b'\x08\x02\x00\x00\x00'
        crc32result = binascii.crc32(data) & 0xffffffff
        if crc32result == crc32key:
            print(''.join(map(lambda c: "%02X" % c, width)))
            print(''.join(map(lambda c: "%02X" % c, height)))

希尔密码

解密在线网站
或者这个

jpg 隐写

steghide 隐写

参考

steghide embed -cf test.jpg -ef secret.txt -p 123456 #加密
steghide extract -sf test.jpg -p 123456 #解密

F5隐写

参考

工具

java Extract 1.jpg -p 123456 #解密

tupper(塔珀自指公式)

参考

出题

一般这种题都会给提示有可能是英文提示或者中文提示,要不然就是顶级脑洞题

import numpy as np
import matplotlib.pyplot as plt
 
def Tupper_self_referential_formula(k): 
    aa = np.zeros((17,106))
    def f(x, y):
        y += k
        a1 = 2**-(-17*x - y%17)
        a2 = (y // 17) // a1
        return 1 if a2 % 2 > 0.5 else 0
 
    for y in range(17):
        for x in range(106):
            aa[y, x] = f(x, y)
    
    return aa[:,::-1]
 
k = 14278193432728026049298574575557534321062349352543562656766469704092874688354679371212444382298821342093450398907096976002458807598535735172126657504131171684907173086659505143920300085808809647256790384378553780282894239751898620041143383317064727136903634770936398518547900512548419486364915399253941245911205262493591158497708219126453587456637302888701303382210748629800081821684283187368543601559778431735006794761542413006621219207322808449232050578852431361678745355776921132352419931907838205001184
aa = Tupper_self_referential_formula(k)
plt.figure(figsize=(15,10))
plt.imshow(aa,origin='lower')
plt.show()

敲击码(topcode)

在线解

敲击码之间没有空格,被坑过一次-_-

带密码的jpg隐写

工具 指令
outguess outguess -k “HAPPY_NEW_YEAR” -r 00000000.jpg hidden.txt
JSteg

一个好奇的人