PWN:Python3 bytes类型转换为str

作为PWN的初学者,在学习时遇到一些问题,现做个解决记录。

问题

在环境之类的搭建好之后,

教程里用的python2,有这样一个payload:payload='a'*offset + p32(0x0891****)

我使用的python3,有类型区分,所以这个语句会报类型错误

”TypeError: can only concatenate str (not "bytes") to str“

解决过程

因此需要进行p32()函数的结果进行类型转换,bytes->str。

查看网上的一些资料,

bytes->str 有看到两种的转换方式,

1.

str(bytes1,encoding='utf-8')

2.

bytes1.decode('utf-8')

于是我改成:payload:'a'*offset + p32(0x0891****).decode('utf-8')

后面还是存在报错,编码错误:

”UnicodeDecodeError: 'utf-8' codec can't decode byte 0x86 in position 0: invalid start byte“。

解决方式

后面网上查找资料,修改编码方式,将utf-8编码改成iso-8859-1。

于是payload改成'a'*offset + p32(0x0891****).decode('iso-8859-1')

成功执行payload,未报错

ps:

(也可以将str->byte类型,

b'a'*offset + p32(0x0891****)

以上用作自己学习过程的记录,如有侵权,请联系删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值