分类: Pwn

7 篇文章

pwn整数溢出
pwn整数溢出 整数溢出原理 具体原理 ​ 在 C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无符号,每种数据类型都有各自的大小范围,(因为数据类型的大小范围是编译器决定的,所以之后所述都默认是 64 位下使用 gcc-5.4),当程序中的数据超过其数据类型的范围,则会…
pwn随机数漏洞
pwn随机数漏洞 PWN中通常使用srand()和rand()配合使用来设置伪随机数。通常当我们输入的数可以覆盖到srand()中的值时,我们可以预测rand()产生固定序列。 关于rand()和sand() rand() rand()函数是使用线性同余法生成随机数,因为其周期特别长,所以在一定范围内可以看成随机的。但每次生成都是固定的序列 我们使…
pwn动态链接库
pwn动态链接库 在众多ROP方法中,重点是要找到system函数的地址来进行ROP,而有的elf源文件中并没有system函数,这时就可以利用libc system 函数属于 libc,而 libc.so 动态链接库中的函数之间相对偏移是固定的。 即使程序有 ASLR 保护,也只是针对于地址中间位进行随机,最低的 12 位并不会发生改变。 所以如…
thumbnail
PLT&GOT
Linux动态链接 一个比喻:发布的文章里复制别人的文字,属于静态链接。给出别人文章的链接,属于动态链接。 Linux下的动态链接是通过PLT&GOT 来实现的 动态链接每个函数需要两个东西: 1.用来存放外部函数地址的数据段 2.用来获取数据段记录的外部函数地址的代码 对应两个表。存放外部的函数地址的数据表为GOT表;存放额外代码的表为P…
thumbnail
Kernel_pwn 入门
kernel pwn的入门学习 1.前置知识 1.1目标文件 kernel pwn题会提供编译好了的内核文件bzImage、文件系统镜像和qemu启动脚本,漏洞点一般位于.ko文件(驱动模块文件)中,该文件允许将内核的功能模块化, 能够方便地添加或删除内核的功能,因此这类文件是便于出题人动手脚的地方,我们要分析的就是这类二进制文件。 寻找用于ROP…
Pwn基础
pwn前置基础 栈溢出及其返回地址(简略) 栈顶:esp 栈底:ebp 返回地址的地址位于 ebp,也就是栈底的地址加 4 个字节,假如 ebp 为 0xFF99C968, 那么返回地址就是 0XFF99C96C 中间相差 4(或者 8 个字节) 个字节,同时要说一下地址的数字越大代表在栈堆中的位置越往下,也可以理解为返回地址在栈底下面 4(或者)…
Pwn常见保护
PWN入门之常见保护 首先,利用gdb插件中checksec命令查看文件开启的保护 for example canary 本意为金丝雀,技术上表示最先的测试的意思。源自过去挖煤时,矿工先把金丝雀放进矿洞或挖煤时一直带着金丝雀。由于金丝雀对甲烷和一氧化碳浓度敏感,会先报警。所以大家都用canary来做最先的测试。 stack canary 表示栈的报…