-
-
[原创]一个困扰我很久的关于pwntools从Python2转到Python3上的问题
-
发表于: 2024-7-18 14:37 2132
-
问题
我最早的那篇关于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-7-30 13:50
被pureGavin编辑
,原因: 增加内容
赞赏
他的文章
- [翻译]fuzzer开发4:快照、代码覆盖率与模糊测试 2287
- [翻译]fuzzer开发 3:构建 Bochs、MMU 和文件 IO 1736
- [翻译]fuzzer开发 2:沙盒化系统调用 1737
- [翻译]fuzzer开发 1:一个新机器 2031
- [推荐]我的翻译索引贴 1151
看原图
赞赏
雪币:
留言: