【编程技术-一个困扰我很久的关于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是真好用呀~
更多【编程技术-一个困扰我很久的关于pwntools从Python2转到Python3上的问题】相关视频教程:www.yxfzedu.com