作为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****)
以上用作自己学习过程的记录,如有侵权,请联系删除