emmm由于没有做笔记,导致,我已经忘记我对我的电脑做过什么,究竟下过什么软件,搭建过什么环境,一切已经重归于零......
一、web篇
1.burp suite下载,windows版和linux版都下载了,但是没安装,因为…我安装过…不过安装包留着
2.vm下载??(😔)
3.phpstudy
二、reverse篇
1.工具:
IDA pro 有
x64dbg 无 windows开源调试器,插件多(ollydbg不开源而且只有32位…)(https://x64dbg.com/)
ghidra 无 用于奇奇怪怪的架构
dnsPY 无 C#反编译器和调试器
Qemu 无 开源虚拟机,用于多架构(https://www.qemu.org/)
Exeinfope 有 查壳
(https://down.52pojie.cn/Tools/有大部分的下载资源)
2.资料(只能看纸质书看不下去pdf版的我…)
(1)二进制基础:《深入理解计算机系统》
(2)CTF:《从0到1:CTFer的成长之路》,《CTF特训营》
(3)逆向:《逆向工程核心原理》
(4)看雪知识库:https://www.kanxue.com/chm.htm
(5)52pojie,看雪,安全客
3.一些知识(…全都忘了)
(1)栈:
EBP/RBP 栈底寄存器
ESP/RSP 栈顶~
(2)unsigned intp
则(p+1)表示起始地址为p+4的4字节内存值
(3)数据操作指令
(4)栈与函数的操作
(5)函数传参
类型 | -cdecl |
---|---|
smc
反调试anti-debug:把isdebuggerpresent 下面的jz改成jnz,,原本输出debugger,现在输出without debugger
三、pwn篇
1.基础知识:
(1)Linux内存布局()
.text
.rodata
…
(2)寄存器
eax(x86)
rip
rsp
rbp
rax
rdi,rsi,rdx,rcx,r8,r9
(3)汇编语言
2.简单栈溢出ROP
(1)栈溢出漏洞
a.缓存区溢出
b.栈溢出
3.解题过程
checksec
IDA
pwntools(https://github.com/Gallopsled/pwntools#installation)
gdb(Ubuntu下,GDB 可以使用 apt 安装:sudo apt install gdb)
(pwndbg我已经忘了怎么用了[裂开])【https://github.com/pwndbg/pwndbg#how】
4.IDA
s:栈底指针
r:返回地址
5.pwndbg
ctrl+C 暂停程序
cyclic+地址()
c //continue
6.payload构造
’A‘*length+p64(后门addr)+’\n’
srds我也不知道我以后会不会连这个都忘了,先记一下把
7.pwntools的作用
from pwn import *#导入pwntools库
context(arch="amd64")#设置当前架构
context(log_level="debug")#设置日志级别
p=process("./可执行文件路径")
#或者p=remote("xxx.xxx.xxx.xxx",端口号)
p.send(s)
#或者p.senline(s)
p.sendafter(dem,s)#接受字符串dem后
#或者p.sendlineafter(dem,s)
8.NX防护机制
减少栈溢出攻击危害
绕过办法:
ROP
【在system注意command//rodata字段】
·Gadget(以return语句结尾的程序代码字段)
【修改寄存器:pop类型gadget】
【写入/bin/sh 再bss段(没有开PIE和ASLR)】
·return-to-libc攻击
9.RELRO
10.按照了Ubuntu20,嘿嘿嘿,我现在才知道要安装虚拟机的.vmx文件,以后我都放在D盘的Virtual machine image文件夹里^ - ^
11.ASLR
地址随机化
【通过GOT表和偏移值】
12.GOT表保存外部函数地址
PLT表
可以泄露libc的地址
13.Canary保护机制
通过泄露canary(用格式化字符串漏洞之类的)解决
14.堆
(1)申请大小未知的内存,动态分配
(2)malloc(size_t n)返回对应大小字节的指针
(3)free(void *p)
(4)malloc_chunk //malloc申请的内存为chunk