pwn05(应对简单栈溢出的常规套路)

news2024/11/16 23:57:42

目录

一、常规检查(nc、file、checksec) 

二、IDA反编译,只找两个东西即可

1、寻找造成栈溢出的函数的地址到ebp的距离

2、 寻找我们所要利用的函数的地址(即我们希望程序最后返回到哪里)

 三、编写并运行exp脚本


 

一、常规检查(nc、file、checksec) 

 

启动容器我们拿到连接和端口

尝试nc,发现没什么反应(应该是主函数里并没有输出语句)

 

常规套路性操作,下载附件拖进kali检查(尽管对于这种基础题来说没必要但我们最好还是按照流程走一遍,以后做复杂一些的题这些基本流程还是很重要的,养成好习惯)

使用file和checksec命令进行检查:

注意:那个checksec的使用,--file=文件名,中间不能有空格,否则执行会报错,并且需要先切换到该文件所在目录,否则你需要跟上完整的文件路径才行,不然找不到。

从结果可以看出,并没有开什么保护机制,并且是一个32位程序。

关于上面参数的详细解释可以参考我上一篇博客 http://t.csdn.cn/oT8gb

二、IDA反编译,只找两个东西即可

1、寻找造成栈溢出的函数的地址到ebp的距离

定位main函数,F5反编译

 

只有一个welcome()函数,双击跟进,找到这个距离是14(ebp减多少就是多少)

这里这个s数组只能存入16个字节,而gets()函数想读多少读多少,就会造成栈溢出

2、 寻找我们所要利用的函数的地址(即我们希望程序最后返回到哪里)

不难发现这里有一个很明显的getFlag函数

就算函数名没有这么明显,也没关系,还有一种方法:

我们使用快捷键shift+F12,去找 /bin/sh

找到之后双击跟进

继续双击getFlag跟进,定位之后F5反编译

得到getFlag函数的伪代码

可以看到,只要让程序最后返回的是getflag函数所在的地址,我们便可通过调用system函数实现命令执行,以此来获取flag。

双击getFlag函数,定位到该函数所在地址:08048486(注意后面写exp脚本时前面要加上0x)

 三、编写并运行exp脚本

这种简单的栈溢出脚本都有固定模板

from pwn import *
#p = process("./stack")
p = remote("pwn.challenge.ctf.show",28107) //题目给你的地址和端口
#p.recv() //接收输出,这里没有所以注释掉
payload = b"a"*(0x14+4) + p32(0x08048486) //根据第二步我们找到的东西来填即可
p.send(payload)  //将构造好的payload发送到远程连接的目标端点
p.interactive()  //启动交互式会话,允许用户在本地终端与远程连接进行交互

由于主函数里面没有输出字符串,我们将接受即p.recv()注释掉即可。

如果主函数本身会输出东西,比如下图:

我们就需要对它进行一个接收处理,使用 p.recv()或者p.recvuntil('32bits\n'),使用recvuntil时里面内容改成最后接收的字符串内容。

注意:在距离14前也需要加上0x,至于后面的+4,你只需要记住32位程序+4,64位+8就行,加的其实是ebp(栈底)自己的长度,因为我们除了覆盖前面的距离还需要覆盖掉ebp,让覆盖之后的返回地址刚好等于我们所要利用的函数所在地址,而p32函数里面就是放我们想要跳转的地址,p32只是对这个地址进行转化,给它转换成4个字节序列存储。

我们使用python3来运行exp脚本:

发现flag,直接cat

 ctfshow{121e2036-2c07-45bb-8f44-1aab5a35b06d}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eNSP-NAT网络地址转换服务

NAT网络地址转换服务 文章目录 NAT网络地址转换服务一、题目要求二、题目分析三、拓扑结构四、基础配置五、测试验证 一、题目要求 1.私网地址使用192.168.1.0/24进行子网划分 2.Telnet Server设备启动Telnet服务 3.isp设备仅配置IP地址 4.PC6,PC7,PC8均可以访问PC9 5.内网…

python 第十章 函数

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 第九章 常用操作 文章目录 系列文章目录10.1函数的作用10.2函数的使用步骤定义函数调用函数函数的注意事项 10…

Linux 内存泄漏检测的实现原理与实现

在使用没有垃圾回收的语言时(如 C/C),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方,Linux 内核开发者…

抖音seo矩阵系统源码开发部署--开发文档分享

目录 一、抖音seo矩阵系统源码自研概况分析 二、 技术开发语言及功能框架 技术要求: 功能框架: 三、 抖音seo矩阵系统开发原则 四、 抖音seo矩阵系统源码开发示例 一、抖音seo矩阵系统源码自研概况分析 关于抖音seo矩阵系统源码自研,在开…

零零信安-DD数据泄露报警日报【第202期】

2023.07.07共发现匿名网络资讯信息79,948条;最近7天同比增长-20.6%;最近30天共发现匿名网络资讯信息2,587,590条。 北京零零信安科技有限公司成立于2020年,是国内首家专注于外部攻击面管理(EASM)的网络安全公司。基于…

Python3,10行代码竟然让URL变短了,没想到还可以这么玩。

让URL变短的方法 1、引言2、代码实战2.1 安装2.2 示例 3、总结 1、引言 小屌丝:鱼哥,有没有什么方法,能让url变短一点 小鱼:我去~ url怎么惹你了, 你让它变短。? 小屌丝:没有了, 我…

python scrapy爬取网站数据(一)

框架介绍 scrapy中文文档 scrapy是用python实现的一个框架,用于爬取网站数据,使用了twisted异步网络框架,可以加快下载的速度。 scrapy的架构图,可以看到主要包括scheduler、Downloader、Spiders、pipline、Scrapy Engine和中间…

你如何准备测试数据?

目录 前言: 一、基于 GUI 操作生成 二、调用 API 生成 三、通过数据库操作生成 四、综合运用 API 和数据库的方式生成 前言: 在进行自动化测试时,准备好合适的测试数据是十分重要的。 准备测试数据是我们测试过程中非常重要的一环&…

RocketMQ5.0--顺序消息

RocketMQ5.0–顺序消息 一、顺序消息概览 RocketMQ支持局部消息顺序消费,可以确保同一个消费队列中的消息被顺序消费,如果做到全局顺序消费则可以将主题配置成一个消费队列。并发(默认)消息消费参考​ 《RocketMQ5.0.0消息消费&…

java中对象字段转换

文章目录 前言一、对象属性转换问题二、如何处理转换?三 、处理办法1 利用 JsonProperty 改变转出属性2 利用 JsonAlias 增加接收的属性 总结 前言 在java中,有时候会涉及到一些对象的转换,为什么转换呢? 由于接受参数和用的时候对应不上由于经历过一些修改,为了兼容 一、对…

mac上 如何批量在文件名后加相同的文字?

mac上如何批量在文件名后加相同的文字?不管你是使用windows电脑还是使用mac电脑,很多小伙伴都会在电脑上进行文件批量重命名的操作,不过这项操作对于使用windows系统电脑的小伙伴来说会简单一些,因为在网上可以搜索到很多这样的教…

Python基础:错误与异常

文章目录 错误和异常程序错误异常处理断言处理程序调试 错误和异常 程序错误 程序的错误 ​ python程序中错误通常分为3种类型,即语法错误、运行错误和逻辑错误。 语法错误:源代码中的拼写语法错误,这些错误导致Python编译器无法把Python…

处理 git仓库提交大小写不识别的问题

源码 echo off title Handle name capitalization git config core.ignorecase false echo.&pause新建一个文本改名 处理资源大小写不识别问题.bat 以文编编辑器打开赋值粘贴上面的代码 丢到你的git仓库根目录 双击运行就可以了

知行之桥EDI系统QA第三期:启动知行之桥专题

随着使用知行之桥EDI系统的用户群体日益壮大,在使用过程中,用户可能对系统的工作原理、功能模块和实施过程有一些疑问。近期整理了有关启动知行之桥EDI系统时,常见的几个问题: 一、启动知行之桥服务报错:Failed to st…

王海峰最新发声!

7月6日,2023世界人工智能大会(WAIC)在上海世博中心开幕,众多专家学者、科技领军人才、企业代表共同探讨人工智能赋能产业发展的全新变化,展望技术新趋势。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海…

无法应付大文件、海量文件可靠传输的FTP,用什么替代?

FTP作为世界第一款文件传输协议,在很长时间内,都广泛在世界范围内应用于各个行业和领域的文件传输,FTP解决了文件传输协议有无的问题,填补了互联网传输协议的空缺,极大程度改善了文件传输的困境。 但随着网络技术的发展…

HTTPS 的加密流程详解

HTTPS 采用的是对称加密和非对称加密结合的「混合加密」方式: 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。 采用「混合加密」的方式的原因&#…

TiDB(3):TiDB安装部署

https://pingcap.com/docs-cn/stable/overview/#部署方式 1 部署方式选择 https://gitee.com/pingcap/tidb?_fromgitee_search 通过查阅官方文档和网友踩坑经验,建议自己测试的时候使用官网推荐的Docker Compose方式快速构建TiDB集群即可(或者使用单机版) 2 TiDB-L…

【PHP+VUE】手术麻醉临床信息管理系统源码

一、前言 手术麻醉信息系统将为医院手术室带来规范化的工作管理标准、实时快捷的信息流,医疗经验的积累和有效归纳, 全面解决了手术室麻醉过程管理的信息化和数字化。 能够规范手术室的工作流程,实现麻醉、手术过程中的信息数字化和网络化,…

基于Pytorch深度学习的脑肿瘤分类识别(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…