跳转至

Format String Bug

  • 格式化字符串漏洞

内存泄露

  • printf()为例
  • %d - 十进制 - 输出十进制整数
  • %s - 字符串 - 从内存中读取字符串
  • %x - 十六进制 - 输出十六进制数
  • %c - 字符 - 输出字符
  • %p - 指针 - 指针地址
  • %n - 到目前为止所写的字符数
  • printf(s); // s = "%x%x%x"会泄露栈上的数据,相对于格式化字符串偏移的数据

  • libc库在线查询

内存修改

  • payload = p32(addr) + b'%27d' + b'%4$hhn'形如此类

got表攻击

返回地址攻击

pwntools中的fsb库

fmtstr
1
2
3
4
5
from pwn import *

context.arch = 'amd64'

payload = fmtstr_payload(offset, {想要修改的内存地址: 内容})