buuctf-pwn pwnable_start(ret2shellcode)题解(学习过程持续更新)

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

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

可以看到这是一个32-bit的文件,什么保护都没开

将文件拖入ida,得到

一段段看,先看

首先调用了write(1,ecx=esp,0x14),也就是从esp指向的地址写出0x14字节的内容,此时的esp指向最后一行的push

push 3A465443h -> 'CTF:'

push 20656874h - >"the "

push 20747261h - >"art "

push 74732073h - >"s st"

push 2774654Ch - > "Let'"

也就是输出"Let's start the CTF:"

调用read(0,ecp=esp,0x3c),从esp指向的地址写入0x3c的内容,此时esp仍指向刚刚的位置

add esp,14h -> esp+0x14

retn -> pop eip , esp+0x4

思路:因为ASLR保护,栈地址每次随机,为了确定我们输入shellcode的地址,得返回到mov ecx,esp的位置再次调用write,打印出栈地址。也就是:溢出覆盖返回地址→跳回 mov ecx,esp→write 打印 esp 泄露栈地址→手动修正偏移算出缓冲区地址→跳转栈执行 shellcode→getshell

返回虚拟机

nano exp.py

保存退出

python3 exp.py

cat flag

此题完

相关推荐
0xBADCODE2 小时前
2026 强网杯 Web 题 cwp · 全链路复盘
前端·安全·web安全·网络安全·系统安全·ctf
Z21-X2 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla10 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
anew___14 小时前
《从零手写操作系统 (63):安全与加固——从内核保护到沙箱隔离》
网络·安全
其实防守也摸鱼14 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
无心水15 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd15 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
乐维_lwops16 小时前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体
§ꦿCFོ༉17 小时前
嵌入式八股—C语言入门学习(一)
c语言·编程语言·嵌入式八股文
m0_7156744318 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
大数据·网络·人工智能·安全·网络安全·政务