pwntools使用

ELF

1
exe = ELF("./attachment")

ELF对象的属性

四大用途

  • sym 查找符号地址 符号表 函数、变量地址
  • plt 获取plt表地址 ==plt表和got表相比最重要的特性就是plt表可执行而got表不可执行 plt会跳转到相应函数处的地址==
  • got 获取got表地址
  • 查找字符串的地址 .search[b’/bin/sh’]

exe.symbols exe.sym
字典,存储符号表(包括函数、全局变量)

exe.sym["main"]
main函数的地址

exe.got
字典,存储GOT表中各函数的表项地址

exe.got["puts"]
puts在GOT表中的地址

exe.plt
字典,存储PLT表中各函数的入口地址

exe.plt["puts"]
puts在PLT表中的入口地址

exe.symbols["puts"]
简写elf.sym
如果puts是静态链接,
会返回puts.text段中的真实地址(.puts代码的起始地址)
如果puts是动态链接

  • 返回的是puts@plt,也就是puts在PLT中的地址
  • PLT只是一个跳转stub,并不是真正的puts实现
  • 如果想要putslibc中的真实地址,需要用elf.got["puts"],并在程序运行时解析它。

查找字符串
exe.search[b"/bin/sh"]
在ELF文件中搜索字符串/bin/sh的地址
exe.search[b"flag"]
在ELF文件中搜索“flag”相关的字符串

误区

可能的误区是,pwntools在静态分析时给出的地址是相对于文件中的偏移,而不是实际运行时的绝对地址。

python脚本常用语法


gdb.attach()之掌握时机

最好在等待输入之间
在send之前加pause()


ELF对象于libcsearcher函数区别


PWN题GDB调试指南 | NEWYM


pwntools使用
http://example.com/2025/03/04/pwntools使用/
作者
yvyvSunlight
发布于
2025年3月4日
许可协议