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










