首页
社区
课程
招聘
[原创]一个困扰我很久的关于pwntools从Python2转到Python3上的问题
发表于: 2024-7-18 14:37 2741

[原创]一个困扰我很久的关于pwntools从Python2转到Python3上的问题

2024-7-18 14:37
2741

问题

我最早的那篇关于IOT漏洞的文章中提到过有个很好用的pwntools函数:asm();此函数可以将汇编直接转换为机器码,但是在Python3上有个问题就是str类型和bytes类型不能直接相加了,问题同样出现在p32()系列函数中,示例如下

from pwn import *

cookie={"Cookie":"password="+"A"*444+p32(0xdeadbeef)+".gif"+rop+"/bin/sh"}

上面这段代码只是为了复现这个问题的代码片段,如果使用Python3直接执行肯定会报错,而Python2就没问题


解决方法

其实解决方法也很简单,直接用decode函数就行了,示例如下

from pwn import *

cookie={"Cookie":"password="+"A"*444+p32(0xdeadbeef).decode('latin-1')+".gif"+rop+"/bin/sh"}

亲测此方法在p32函数上有效,asm函数待测,另外注意这里必须用latin-1编码,其他的均报错;至于latin-1编码有兴趣的可以自己研究一下

上面提到的我的那篇IOT文章中有一处提到了字符比较的问题

>>> b'\xff\xff\x06\x28'=='\xff\xff\x06('
True

上面的比较只在Python2中成立,在Python3中会返回false,但事实上是不影响运行的

至于为什么我会想着解决这个问题,主要是培训需要,后面如果有时间的话就把上次fuzz的第一个路由器漏洞完整利用过程发出来吧(也有可能鸽~),会用到这次提到的方法

最后

ChatGPT-4o是真好用呀~


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2024-7-30 13:50 被pureGavin编辑 ,原因: 增加内容
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
直接在字符串前面加个b就好了
2024-11-24 12:03
0
雪    币: 14653
活跃值: (17749)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
wx_eternity. 直接在字符串前面加个b就好了
这也是解决方法之一
2024-11-24 17:05
0
游客
登录 | 注册 方可回帖
返回
//