Pwn 所需要的基础知识
复制本地路径 | 在线编辑
C++ 和 汇编语言的转换
puts, gets
基本格式
# rdi -> memory pointer
lea rdi, str.test / [test]
call puts / gets
printf
基本格式
# printf("a = %d, b = %d", a, b);
push address(a)
push address(b)
lea rdi, "a = %d, b = %d"
call printf
scanf
基本格式
# scanf("%d%d%d", &a, &b, &c);
# 具体顺序可能不一样
lea rdi, "%d%d%d"
mov rsi, address(a)
mov rdx, address(b)
mov rcx, address(c)
call scanf
目前用到的保护机制
也就是checksec命令出来的结果显示
Canary: 很简单,就是栈保护NX(DEP): 就是禁止在数据类型的地址处执行代码FORITY: 就是检查read这些函数有没有格式化字符串漏洞→对应代码形式为printf_chkRELOAD: 就是防止修改 GOT 表,FULL RELOAD→GOT 表只读,Partial RELOAD→部分只读PIE(ALSR): 就是地址随机化,就是比如之前做过的题目中,栈的位置每次都是改变的,这就是地址随机化
系统架构
查看系统的结构:uname -m
目前的 CPU 架构
