buuctf-pwn ciscn_2019_sw_1(32位只有一次格式化机会)题解(学习过程持续更新)

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

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

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

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

可以看到明显的printf(&format)格式化字符串漏洞,且只有一次机会,有内置system函数,无"/bin/sh"字符串。我们可以通过改写finif_arrary为main函数地址,从而获得第二次printf的机会,输入"/bin/sh"

思路:第一次改写fini_array为main函数,改写printf@got里的内容为system@plt;第二次输入'/bin/sh'字符串

在ida里收集main,system@plt的地址

得到main_addr = 0x8048534,system_plt=0x80483d0

返回虚拟机

收集fini_array,printf@got的地址

得到fini_arry=0x804979c

gdb pwn

start

got

得到printf@got=0x804989c

./pwn

aaaa.%p.%p.%p.%p.%p

可以看到0x61616161在我们输入aaaa后的第4个参数处

nano exp.py

保存退出

python3 exp.py

ls

cat flag

此题完

相关推荐
hz567899 分钟前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
qq_2842740526 分钟前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Navigator_Z30 分钟前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
Titan20241 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
浮链序1 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm
小雪崩2 小时前
嵌入式学习 day64:字符设备驱动
学习
袁哥大话安全2 小时前
巡隐WEBSHELL扫描软件
人工智能·安全·web
个 人 练 习 生3 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
小宋10213 小时前
A2UI从零实战:Agent安全生成交互界面与事件回传
javascript·人工智能·安全·交互
坤坤子吖3 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习