欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

CTF(Pwn)32位文件 和 64 文件 的 差异

发布时间:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 CTF(Pwn)32位文件 和 64 文件 的 差异 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一. 地址方面字节上的差异

32位是cpu一次处理的位数,324字节,相当于地址的宽度,即sizeof(*p);虚拟地址大小为4G,即有232次方个地址,320321个地址;![在这里插入图片描述](https://img-blog.csdnimg.cn/20210323094254825.png)64位是cpu一次处理的位数,648字节,相当于地址的宽度,即sizeof(*p);虚拟地址大小为128G,即有264次方个地址,640641个地址;

在写Exp的时候: 64位

32位:

————————————————

二.函数调用方面的差异

由于函数调用这方面的差异:

在写 ExP,payload的时候:

32 位: p32(system)+p32(bin_sh)

64 位: p64(rdi)+p64(bin_sh)+p64(system)

出现栈劫持的时候 p(binsh)在前面

三.格式化漏洞利用方面的差异

64位的格式化字符串漏洞,它跟32位有挺大区别的,要注意‘00’的截断,不可以像32位那样一步修改到位,它一次只可修改2字节。
出现截断这种情况时,我们可以根据情况更改偏移量,或者填充字符来克服;

而32位

相比64位利用起来就很简单;

32位的 payload = p32(泄露地址) + %偏移$x 来构建

类似payload=p32(printf_got)+"%6$s"

64位

payload=“aa%9$nAAA”+p64(judge)

64位文件

为了字符串不被截断,我们只能将地址给放在字符串的后面了

总结

以上是生活随笔为你收集整理的CTF(Pwn)32位文件 和 64 文件 的 差异的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。