-
-
[原创]一个困扰我很久的关于pwntools从Python2转到Python3上的问题
-
发表于:
2024-7-18 14:37
2741
-
[原创]一个困扰我很久的关于pwntools从Python2转到Python3上的问题
问题
我最早的那篇关于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编辑
,原因: 增加内容