
pwn基础
文章平均质量分 74
b1n8
这个作者很懒,什么都没留下…
展开
-
堆相关的数据结构
堆的相关数据结构原创 2024-01-30 00:21:52 · 949 阅读 · 0 评论 -
堆的基础知识
堆基础知识原创 2024-01-30 00:19:44 · 711 阅读 · 0 评论 -
pwn工具安装及其使用
首先一个ubuntu16.04版本以上的虚拟机gdb使用以及插件安装gdb <file>加载程序gdb基本命令:命令作用示例start启动程序,并且在入口处停下run启动并且执行程序,直到遇到断点或者程序结束continue继续执行查看内存,num为数量,size为数据大小,format为格式,addr为内存地址x/8gx addrdisas查看汇编编码寻找内存vmmap查找程序内存布局info b查看断点列表info r查看寄存器p查看一个值。原创 2023-11-29 19:41:38 · 1523 阅读 · 1 评论 -
Linux保护机制
canary是一个开头字节为\x00的一段长度为八个字节的随机数,这个随机数本体存放于fs段偏移为0x28的区域。在每次函数调用中,程序都会将这段随机数存放于栈底,每次运行结束返回时,都会将这一随机数与他的本体进行比对。主要是针对延迟绑定机制,意思就是说got表这种和函数动态链接相关的内存地址,对于用户是只读的。(父进程和子进程canary可能是一样的,让父进程一种fork子进程,爆破出canary)如果这个值被改变,则意味着发生了栈溢出,程序直接退出,没有改变的话,程序继续执行。原创 2023-11-29 19:40:56 · 414 阅读 · 1 评论 -
elf文件结构
linux系统环境中,二进制可执行文件的类型是ELF(Executable and Linkable Format)文件。elf文件的格式比较简单。我们需要了解的就是elf文件中的各个节、段等概念。elf的基本信息存在于elf头部信息中,这些信息包括指令的运行架构、程序入口等等内容,我们可以通过readelf -h 来查看头部信息。magic:识别elf文件格式也可以通过010editor这样的工具来分析需要下载模板elf中包含很多节(section)原创 2023-11-29 19:40:23 · 976 阅读 · 1 评论 -
调用约定~
作用是弹栈,将栈顶的数据弹出到寄存器,然后栈顶指针向下移动一个单位。具体来说:如pop rax,作用就是mov rax[rsp];add rsp 8的作用就是压栈,将栈顶指针向上移动一个单位的距离,然后将寄存器的值存放在栈顶。具体来说:如push rax,其实际效果就是:sub rsp 8;立即跳转,不涉及函数调用,用于循环、ifelse这种场合。具体来说:如jmp 1234h,效果就是:mov rip 1234h;函数调用,需要保存返回地址。原创 2023-11-29 19:39:36 · 1048 阅读 · 1 评论 -
linux基础
保护层级:分为ring0-ring3一般来说就两个,0和30为内核3为用户权限:用户分为多个组文件和目录等等的权限一般都是三个,即可读可写可执行RWX赋予权限就是 chmod +想赋予的权限 filename虚拟内存和物理内存物理内存很直白,就是内存中实际的地址虚拟内存就是物理内存经过MMU转换后的地址(页面)系统会给没一个用户进程分配一段虚拟内存空间。所以我们调试的可执行程序的内存空间布局都差不多,但是是虚拟内存不是实际的物理内存基础linux命令学会看源码分析源码卧槽了。原创 2023-11-29 19:37:55 · 972 阅读 · 1 评论 -
整数溢出~
有符号上溢出:有符号正数0x7fffffff+1变成负数0x80000000。无符号下溢出:有符号数0x80000000-1变成正数0x7fffffff。数值有上下限范围,那么就不可避免会出现溢出的情况。无符号下溢出:0-1变成0xffffffff。无符号上溢出:0xffffffff+1=0。以32位int为例,以下有四种溢出。整数溢出一般配合别的漏洞来使用。原创 2023-11-29 19:36:56 · 525 阅读 · 1 评论 -
汇编语言基础
bit 比特 1位(1b)byte 字节 8位(2B)word 字 16位dword 双字 32位qword 四位 64位计算机寻址大多数以字节为寻址单位进行寻址机器码:就是01但是01看起来太痛苦了,所以一般使用16进制来呈现汇编语言就是这些机器码的助记符。原创 2023-11-29 19:35:29 · 620 阅读 · 1 评论