CTF记录
Misc Web Reverse Pwn Crypto Others
Misc:
图片隐写 stegsolve
看尾部有没有多
stegsolve各种功能试一遍
png看宽高
而且而且可以多一块
wav隐写:audition工具 频谱
zip加密:伪加密
暴力破解
zip store是不压缩的 bkcrack rbkcrack明文攻击
zip deflate先压缩再加密 明文攻击要先进行指定方案的压缩
png :png头 尾部是固定的
exe:0x40 byte的固定以及0x4d5a的头
hubu开头是zlib压缩
base64 以及原理
Base64的原理是把明文3个字节一组
然后这样一组就是24个二进制位
然后每6位这样拆开拆成4部分
一部分6位转换成整数
这样一组4个整数
然后把这4个整数去base64的字母表里面代入索引找到对应的字母
这样3个字节就变成4个编码后的字母(当然这个字母包括+ / 大小写 数字)
如果最后明文多出一个字节
那么就是8位,后面再加4位变成12字节,这样密文末尾填两个等号==使得总长度是4的倍数
如果明文多出两个字节
那么就是16位,后面加2位变成18字节,密文末尾填一个等号=
各种base编码的混合
base64打乱字母表
office文件本质上是一个zip
摩斯电码编码 . - /
有时候网页可能搜索不出来一些文本因为实际的内容不是这个但是使用了特殊的编码/字体/css
Crypto:
Rsa攻击
共模攻击
广播攻击
小d(特别大e)攻击
RsaCtfTool
CopperSmith攻击
Aes
ctr cbc xts等
爆破密钥
z3solver
密文窃取
padding oracle
Tea
RC4
ECDSA
格密码 LWE LLL BKZ
凯撒密码
维吉利亚密码
ROT13/ROT47
jsfuck
流密码:
线性同余,移位
Md5碰撞:fastcoll hashclash
指定前缀 公共前缀 纯ascii
SHA1碰撞
随机数种子问题:种子固定那么随机数固定
使用z3solver from z3 import * s=Solver() s.add() s.check() s.model() a=Int('x')
b=BitVec('x',8)
bitvec可以进行位操作 右移不能用>> 要用LshR(变量,位数)
Reverse:
PE头修复 0x4d5a开头
然后dos头确定PE头偏移
PE头开头是PE
然后里面有section table
iat表一般在.idata里面
是windows下动态解析dll函数地址的
但是在文件里也有对应
虚拟地址和文件地址的转换:虚拟地址-所在segment的虚拟地址+所在segment的文件地址得到最后的文件地址
但是这个函数在文件里不存在,所以文件里又对应一个地址然后再这样找就能找到这个函数的描述相关,这就iat表的一项
使用PEbear不好用
推荐使用CFF explorer
tlscallback在main函数执行之前(还有init相关的)
VirtualProtect是windows设置segment执行权限的函数
linux下是mprotect
这样有可能自修改
Python程序打包成一个exe使用pyinstractor解包
然后里面有pyc文件,一般main.pyc是主程序
使用uncompyle6可以反编译一部分
更多的要使用脚本手动反编译
import dis
import marshal
f=open("PYZ.pyz_extracted\\sys_core.pyc","rb")
b_data=f.read()
print(b_data)
f.close()
PyCodeObjectData=b_data[16:]
Pyobj=marshal.loads(PyCodeObjectData)
dis.dis(Pyobj)]
这样得到原始字节码可以手动逆向
angr:使用angr可以处理一部分逆向比较慢
nuitka逆向:使用工具首先解包
然后找到main.dll之类的是主程序
然后里面会读取dll的某个数据段
使用resourcehacker提取
这样得到的数据段是原始字节码
使用python脚本能够还原出字节流(不是原始代码)
uefi ovmf逆向
wasm go c# rust逆向要使用工具
unity逆向整理过
有时候要合理猜测加密算法 可能密钥是明文可读的
去除反调试:一种是检测调试,一种是ptrace,一种是int 3下断点不让你调试,还有一种是双进程互相调试
Web:
sh/bash绕过:&&先执行后面的再执行前面的
|把前面的输出作为后面的输入
?可以当占位的通配符
head less more tail可以代替cat ,tac是倒序
可以使用xxd -r -p |bash
hex编码绕过
或者
base64 -d|bash
base64编码绕过
另外还有$(())
${}
``
之类的
SQL注入 报错注入/堆叠注入
PHP反序列化
SSTIpython执行绕过
java执行绕过
文件上传/Webshell(RCE)
proto原型链污染
Pwn:
做题太少没有
Other:
图寻
黄粱一梦,终是一空
本文来自博客园,作者:hicode002,转载请注明原文链接:https://chuna2.787528.xyz/hicode002/p/19606205

浙公网安备 33010602011771号