ROP合集
ROP-ret2libc
环境:glibc 2.31 Ubuntu20.04
源码:
1 | // gcc -O0 -fno-stack-protector ret2libc.c -no-pie -o retlibc |
stdout ??
C语言中的 stdout 是一个定义在<stdio.h>的宏(macro),它展开到一个 FILE* (“指向 FILE 的 指针”)类型的表达式(不一定是常量),这个表达式指向一个与标准输出流(standard output stream)相关连的 FILE 对象。 只是方便操作输出,比如传给一个函数等等。这时函数的输出就不是输出到文件,而是传进来的 stdout文件指针,即标准输出。
stdout(Standardoutput)标准输出 stdin(Standardinput)标准输入 stderr(Standarderror)标准错误 接下来我们debug一下文件 文件会给我们stdout的地址而且每次都会变化 libc是c函数库它会被加载在进程空间 运行后产看内存
之前介绍过了gdb 与 pwndbg,这里做pwn题目演示就用pwndbg了
pwngdb在调试对调试堆的数据结构时候很方便
peda在查找字符串等功能时方便
安装pwndgb
1 | git clone https://github.com/pwndbg/pwndbg |
切换:
vim ~/.gdbinit
注释掉peda 保存
首先先gdb调试启动程序
gdb -r ret2libc
r
先查看下内存
vmmap
其中后缀为.so文件为libc 虽然地址每次都会变化但是它的偏移量是不会变化的 我们先调试一下 我们先下一个断点在printf
…ToDo….