buuctf-pwn mrctf2020_easy_equation(64位fmt)题解(学习过程持续更新)

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

可以看到这是一个64-bit的文件,NX保护开启

将文件拖入ida64,按F5将汇编代码转换成c语言代码,得到

可以看到存在printf(&s)格式化字符串漏洞,并且经计算得到:当judge=2时if语句成立,得到shell。所以我们可以利用格式化字符串漏洞来将judge的值改写成2

双击judge

得到judge_addr = 0x60105c

返回虚拟机

./pwn

aaaaaa.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p

可以看到第一个a在第7个参数里,剩余的五个a在第8个参数里,所以我们在输入judge_addr之前需要先输入一个a来占位。

并且这是一个64位的格式化字符串漏洞,我们需要将地址写在payload的最后。在地址前先输入9字节的内容,占据第七个参数的一部分和第八个参数,那么地址就在第9个参数。讲的有点乱,直接看exp,就懂了。

nano exp.py

两个a是让judge等于2,三个A是用来占位的,aa%9$nAAA总共9字节

保存退出

python3 exp.py

cat flag

此题完

相关推荐
jimmyleeee9 小时前
大模型安全之五十一:OWASP LLM Top 10 全景解读
人工智能·安全
wuyk55510 小时前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
La Pulga13 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石14 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
武天旭15 小时前
AI安全--AI大模型的对抗样本攻击与防御解析
人工智能·深度学习·安全·机器学习
Navigator_Z18 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
Peter-OK18 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道18 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
冻柠檬飞冰走茶19 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
橙橙笔记19 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能