pwn工具
checksec --file=文件名
gdb dyntext 查看手册
r 运行程序
b 下断点
clear/delete/d + 行号/*地址 去除断点
n 步过
s 步入
info 查看断点信息
c 继续执行程序
start 停在start
p + 指针 打印出指向的地址
backtrace 查看函数调用栈的操作
return 退出正在进行的函数
离ebp越远,地址越小
vmmap
x 可执行权限
r 可读权限
w 可写权限
ROPgadget --binary 文件名 --only 'pop|ret' | grep 寄存器
ROPgadget --binary 文件名 --only "int"
静态编译程序生成exp ROPgadget --binary 文件名 --ropchain
plt,got 显示使用的plt,got
x/(显示位数) plt地址 查看plt二进制内容 一个plt表象16个字节 got.plt表象8个字节(存储对应的地址)
x/50xg 地址 显示从当前地址开始的50个4字节的十六进制值
disass 地址 显示地址的汇编代码
disassemble 显示当前函数的汇编代码
strings 程序名 | grep 搜索的字符串
f7开头为libc的地址 80开头为ELF文件的地址
find / -name flag.txt 直接查找flag所在
elf = ELF("./文件名")
hex(next(elf.search(b"/bin/sh\x00"))) #寻找/bin/sh
system_ptr = elf.plt["system"] #寻找plt表中的内容
buf2 = elf.symbols["buf2"] #寻找对应的标识符
heap 查看堆的情况
lld 查看程序用的libc文件
code 获得基址