利用条件 存在两个相邻堆块 能控制前一堆块数据部分 能控制后一堆块header部分 有可写指针指向前一堆块数据段地址,能获取该指针地址 利用原理 堆块 free 时,如果相邻前一堆块处于空闲状态,会尝试进行后向合并的操作,将两堆块合并成一个堆块。其中由于空闲堆块原本在双向链表中管理,因此会触发 unlink 对其进行脱链,即从双向链表中取出。 关于…
安全策略 先用checksec检查安全策略 Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled 运行程序 大概运行一下程序,理清程序的执行流程,可以看到程序的功能是对图书的增删改查。 1. Create a bo…
GDB命令详解 启动选项 -cd:设置工作目录 -q:安静模式,不打印介绍信息和版本信息 -d:添加文件查找路径 -x:从指定文件中执行GDB指令 -s:设置读取的符号表文件 基础命令 命令 简写 gdb功能 使用方法及备注 list l 列出源代码 每次接着上次的位置往下列,每次列10行;后接参数表示列出以参数位置为中心上下10行代码 run r…
## 工具介绍 GNU汇编器(GNU Assembler),简称为GAS。 汇编代码通过*汇编器***汇编**生成机器码。 参考**编译原理**相关文章。 ## 工具安装 ### Linux 系统自带,无需安装 ## 基本用法 具体用法见手册 ``` <pre class="wp-block-code">`…
## 工具介绍 ROPgadget工具可以帮助你寻找合适的gadgets,在编写你的ROP exp的时候有很大作用。 ROPgadget支持 x86, x64, ARM, ARM64, PowerPC, SPARC和MIPS架构下的ELF/PE/Mach-O文件格式。 ## 工具安装 安装pwntools自带 ## 基本用法 ``` <pre…
原理 利用RAND()和GROUP BY,以包含RAND()的数据为键进行分组(GROUP BY),在执行过程中,GROUP BY会读取每一行数据,如果已存在相应的键值会更新对应行的值,否则会插入该键值,而插入该键值时会重新执行RAND()函数,而不是用之前读取到的值,如果此时RAND()生成了与已有键值冲突的值,则会导致主键冲突报错,报错格式如下…
确定变量相对ebp偏移量 介绍四种确定变量相对ebp偏移量的方法 一、GDB调试出偏移量 0x8048677 <main+95> lea eax, [esp + 0x1c] 0x804867b <main+99> mov dword ptr [esp], eax ► 0x804867e <main+102> ca…