vi编辑文件意外退出后保存的文件
首次意外退出 .xxx.swp
第二次意外 .xxx.swo
第三次意外 .xxx.swn
其他格式 *.un.xxx.swp
布尔盲注
id=1' and select(mid((select concat(user,0x7e,pwd) from wp_user),2,1))='d'%23
时间盲注
id=1' and sleep(1)%23
报错注入
id=1' or updatexml(1, concat(0x7e, (select pwd from wp_user)), 1)%23
堆叠注入
闭合后,执行任意语句
内联注释 正则绕过
/*! 50000select*/ 绕过正则 \bselect\b 的过滤
PNG 文件格式
IHDR 文件头数据块
PLTE 调色板数据块
IDAT 图像数据块
IEND 图像结束数据块
每个数据块 由以下四部分组成
Length 长度
Chunk Type Code 数据块类型码
Chunk Data 数据块数据
CRC 循环冗余校验码
文件头
89 50 4E 47 => \x89PNG
00 00 00 0D => 数据块长度为13
49 48 44 52 => IHDR
00 00 00 C8 => 图像宽度 \0xd8 = 200
00 00 00 96 => 图像高度 \0x96 = 150
08 => 色深 2^8 = 256色
03 => 索引图像
00 => 使用Deflate压缩编码压缩图像数据
00 => 预留
00 => 非隔行扫描
AC 02 37 2B => CRC
文件尾
00 00 00 00 IEND数据块长度
49 45 4E 44 b'IEND'
AE 42 60 82 CRC标识
根据CRC校验值, 恢复png图片的高/宽
import os
import binascii
import struct
# 文件的第12~29字节为chunk[0],其中16~19字节为宽,20~23字节为高。(不要忘记0)
misc = open("flag.png","rb").read()
for i in range(1024):
# 宽是对的,修复高
data = misc[12:20] + struct.pack('>i',i) + misc[24:29]
# 高是对的,修复宽
# data = misc[12:16] + struct.pack('>i', i) + misc[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == int(''.join(format(byte, '02x') for byte in bytearray(misc[29:33])), 16):
print(i)
print("hex:", hex(i)) #转为16进制
其他文件格式
JPEG (jpg/jpeg): 文件头 FF D8 FF 文件尾 FF D9
GIF (gif): 文件头 47 49 46 38 => b'GIF8' 文件尾 00 3B
ZIP Archive (zip): 文件头 50 4B 03 04 文件尾 50 4B
RAR Archive (rar): 文件头 52 61 72 21
Wave (wav): 文件头 57 41 56 45
AVI (avi): 文件头 41 56 49 20
MPEG (mpg): 文件头 00 00 01 BA
MPEG (mpg): 文件头 00 00 01 B3
Quicktime (mov): 文件头 6D 6F 6F 76
zip伪加密破解
找到倒数第二个50 4B,以此为基准点,往后找到第一个09 00,将09改为00,保存。
图片频域盲水印
# 合成盲水印图
python3.11 blind_water_mark.py encode raw.png wm.png raw_with_wm.png
# 提取盲水印(需要原图)
python3.11 blind_water_mark.py decode raw.png raw_with_wm.png wm_from_raw.png
压缩包加密
# 暴力破解工具
brew install fcrackzip
# zip伪加密
修改控制加密的字节来控制
取证技术
流量分析
tcpdump / tshark / wireshark
tshark -r xxx.pcapng -T fields -e usb.capdata
内存取证工具 volatility
磁盘取证步骤
file xxx
fdisk -l
mount 挂载磁盘
分组加密 5种模式
ECB 电子密码本:每个明文块独立加密成密文块,明文长度不是分组长度的整数倍,则需要填充。
CBC 密码分组链接:每个明文块先与前一个密文块进行异或后再加密,第一个块中需要使用iv。
OFB 输出反馈:将块密码变成同步的流密码,将之前一次的加密结果使用密钥再次进行加密(第1次对iv进行加密),产生的块作为密钥流,然后将其与明文进行异或,得到密文。
CFB 密文反馈:类似OFB,只不过将上一组的密文作为下一组的输入来加密进行反馈。
CTR模式 计数模式:与OFB类似,CTR将块密码变为流密码,通过递增一个加密计数器来产生连续的密钥流。
xxxx