安恒安全培训实习生,CTF方向面试题!

目均模拟真实CTF赛题,需结合动态调试与工具链(pwntools/ROPgadget/one_gadget)完成利用。

覆盖栈、堆、格式化字符串、高级堆利用、沙箱逃逸五大方向,从基础ROP到House of Apple,逐步提升对抗防护的能力。

题目1:栈溢出+ROP绕过NX与Canary

名称babyrop
描述:目标程序是一个64位ELF文件,存在栈溢出漏洞,但开启了NX和Canary保护。请获取远程服务器的shell。
考察点:Canary泄露、ROP链构造、基础栈溢出利用。
解答步骤

  1. 漏洞分析
    • 逆向发现程序在读取输入时使用gets函数,导致栈溢出。

    • 输入长度超过缓冲区后,可以覆盖Canary和返回地址。

  2. 利用思路
    • 通过溢出泄露Canary值,绕过栈保护。

    • 构造ROP链调用system("/bin/sh")绕过NX。

  3. EXP关键代码
    from pwn import *
    p = process('./babyrop')
    payload = b'A'*offset_canary + p64(canary) + b'A'*8 + rop_chain
    p.sendline(payload)
    p.interactive()
    

详细解答

  • 使用%p格式字符串泄露Canary(或通过逐字节爆破)。

  • 利用ROPgadget查找pop rdi; retsystem地址,拼接ROP链。

题目2:堆溢出+Unlink攻击

名称heap_unlink
描述:一个32位程序存在堆溢出漏洞,允许覆盖相邻堆块的size字段,触发Unlink攻击。
考察点:堆布局、Unlink利用、伪造堆块结构。
解答步骤

  1. 漏洞分析
    • 输入数据时未检查长度,导致堆溢出,可覆盖下一个堆块的prev_sizesize字段。

  2. 利用思路
    • 伪造一个空闲堆块,通过Unlink操作实现任意地址写。

    • 覆盖free@gotsystem地址,触发free("/bin/sh")

  3. EXP构造
    # 伪造堆块结构
    fake_chunk = p32(0xdeadbeef) + p32(heap_addr - 12)  # fd/bk指针
    payload = b'A'*overflow_size + p32(0x80) + p32(0x88 | 0x1) + fake_chunk
    

详细解答

  • 通过溢出修改sizePREV_INUSE位,触发合并操作。

  • 利用Unlink的FD->bk = BKBK->fd = FD实现任意地址写入。

题目3:格式化字符串+栈迁移

名称fmt_stack_pivot
描述:程序存在格式化字符串漏洞和栈溢出漏洞,但溢出空间不足,需结合栈迁移技术完成利用。
考察点:格式化字符串泄露、栈迁移(Stack Pivot)、ROP链构造。
解答步骤

  1. 漏洞分析
    • 使用printf(user_input)导致格式化字符串泄露libc地址。

    • 栈溢出长度不足以覆盖返回地址,但可覆盖rbp

  2. 利用思路
    • 泄露栈地址和libc基址。

    • 覆盖rbp为可控内存地址,通过leave; ret指令实现栈迁移。

  3. EXP关键代码
    payload = fmtstr_payload(offset, {printf_got: system_addr})  # 格式化字符串覆盖GOT表
    payload += p64(migrated_stack_addr)  # 覆盖rbp
    

详细解答

  • 利用%nrbp位置写入目标地址。

  • 迁移后在新栈布置ROP链调用system("/bin/sh")

题目4:Use After Free + Fastbin Attack

名称uaf_fastbin
描述:程序在释放堆块后未清空指针,可通过UAF修改fd指针,实现任意地址分配。
考察点:UAF漏洞利用、Fastbin Attack、内存布局。
解答步骤

  1. 漏洞分析
    • 释放堆块后仍能使用悬垂指针修改其fd值。

  2. 利用思路
    • 修改fd指向伪造的Fastbin链,分配堆块到__malloc_hook附近。

    • 覆盖__malloc_hookone_gadget地址。

  3. EXP构造
    # 分配并释放堆块A
    free(A)
    # 通过UAF修改A的fd为fake_addr
    edit(A, p64(fake_addr))
    # 再次分配两次,第二次得到fake_addr处的堆块
    

详细解答

  • 计算__malloc_hook附近的可用地址(如利用0x7f对齐特性)。

  • 使用one_gadget工具查找可直接触发shell的gadget。

题目5:高级堆利用+沙箱逃逸

名称house_of_apple
描述:程序开启沙箱(禁用execve),需通过堆漏洞构造ORW链读取flag文件。
考察点:House of系列利用、沙箱逃逸、SROP(Sigreturn-Oriented Programming)。
解答步骤

  1. 漏洞分析
    • 存在任意地址写漏洞,可劫持_IO_list_all指针。

    • 沙箱限制只能使用open/read/write系统调用。

  2. 利用思路
    • 伪造_IO_FILE结构体,触发_IO_flush_all_lockp中的函数调用链。

    • 构造ROP链调用open("flag")read(fd, buf, 0x100)write(1, buf, 0x100)

  3. EXP关键代码
    # 伪造_IO_FILE结构
    fake_file = p64(0) * 18 + p64(0) + p64(1) + p64(0xffffffff) + p64(rop_chain_addr)
    

详细解答

  • 利用House of Apple技术劫持程序流至ROP链。

  • 通过syscall; retgadget拼接ORW链。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++QT】Combo Box 组合框控件详解

文章目录 一、QComboBox(Combo Box)1. 基本用法2. 特性3. 信号与槽函数 二、QFontComboBox(Font Combo Box)1. 基本用法2. 特性3. 信号与槽函数 三、总结如果这篇文章对你有所帮助,渴望获得你的一个点赞! 在…

Best Video下载器——全能高清无水印视频下载工具

在当今短视频和流媒体盛行的时代,用户经常遇到想要下载视频却受限于平台限制的情况。无论是收藏喜欢的影视片段、保存有价值的教程,还是进行二次创作,一款高效、免费且支持多平台的视频下载工具显得尤为重要。Best Video下载器正是为此而生&a…

AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?

音频处理领域的天花板被撕开了。 刚刚,kimi 发布全新通用音频基础模型 Kimi-Audio,这款由月之暗面(Moonshot AI)推出的开源模型,在 24 小时内收获 3.2 万星标,不仅以 1.28% 词错率刷新语音识别纪录&#xf…

安装VMware虚拟机时出现报错:

如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用。 1.解决的方法: BIOS 设置要求 为了使 VMware Workstation 支持用户级别的监控并允许模块 MonitorMode 成功启动,需确保…

基于ESP32 S3 + PVDF采集呼吸心率

压电薄膜可以采集到微动特征,压阻传感器可以采集到是否有大重量压力,利用这个特性实现类似于床带采集呼吸心率,实现生命体征检测功能 ESP32 S3 PVDF实现生命体征检测带 硬件: ESP32 S3PVDF压敏压阻涂鸦传感器(可选支…

多模态大语言模型arxiv论文略读(五十)

Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文标题:Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文作者:Dingchen Yang, Bowen Cao, Guang Chen, Changjun Jiang ➡️ 研究机构: 同济大学…

智能驾驶新时代:NVIDIA高级辅助驾驶引领未来出行安全

智能驾驶新时代:NVIDIA高级辅助驾驶引领未来出行安全 在全球汽车产业数字化转型的时代潮流中,高级辅助驾驶技术已逐渐成为推动产业革新的核心动力。作为这一领域的领导者之一,NVIDIA通过其先进的技术解决方案,正在积极塑造未来的…

总结小程序的坑

小程序中的wxss中 background不能使用本地图片 解决方法: 使用 Base64 编码(适合小图片)使用网络图片, 网络图片需要用https用 image 标签替代 分包的图片主包不能使用,这是分包中的图片资源默认不能被主包或其他分包直…

供应链管理-国际结算:本币互换 / 数字货币桥 / 我国在沙特发行美债

一、本币互换 本币互换(Local Currency Swap)是指两国(或地区)的央行(货币当局)签订协议,约定在一定条件下,任何一方可以一定数量的本币交换等值的对方货币,用于双边贸易…

湖北理元理律师事务所:从法律视角看债务优化的合规实践

在债务纠纷高发的社会背景下,法律服务机构如何通过合规手段帮助债务人实现债务优化,成为公众关注的议题。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构,其服务模式与成果为行业提供了可参考的样本。 服务框架:法…

免费在Colab运行Qwen3-0.6B——轻量高性能实战

Qwen一直在默默地接连推出新模型。 每个模型都配备了如此强大的功能和高度量化的规模,让人无法忽视。 继今年的QvQ、Qwen2.5-VL和Qwen2.5-Omni之后,Qwen团队现在发布了他们最新的模型系列——Qwen3。 这次他们不是发布一个而是发布了八个不同的模型——参数范围从6亿到235…

【Java】打印运行环境中某个类引用的jar版本路径

背景 正式环境出现jar版本不匹配问题,不知道正式环境用的哪个jar版本。通过一下可以打印出类调用的jar // 获取 POIFSFileSystem 类的加载器并打印其来源路径 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…

Python生活手册-元组:保险柜与瑞士军刀

一、元组的本质:数据世界的保险柜 Python元组就像银行金库里的​​智能保险箱​​,一旦存放物品就会自动焊死箱门。当你把结婚戒指和房产证放进保险箱后,任何人都无法替换或破坏这些物品,只能通过特定窗口查看内容。 # 创建家庭…

dameng-mcp-server达梦MCP服务

达梦数据库手写MCP服务 文件名称 server.py 源代码 参考mysql-mcp-server写的dameng数据库版本的 点击访问mysql-mcp-server的github仓库 mcp服务端 import asyncio import logging import os import sys from dmPython import connect from mcp.server import Server from mc…

IntelliJ IDEA 内存优化

优化插件使用 1)卸载不必要插件:进入 “设置”→“插件”→“已安装”,查看并卸载不常用的插件,如代码分析、代码覆盖率等不常用的插件,只保留必要的插件。2)定期清理与更新插件:定期检查插件更…

TCL中环深化全球布局,技术迭代应对行业调整

在全球能源转型加速与光伏行业深度调整的双重背景下,TCL中环凭借前瞻性的全球化布局与核心技术突破,持续巩固行业领先地位。2024年年报显示,报告期内实现营业收入284.19亿元,净利润为-108.06亿元。面对行业周期性亏损与产业链价格非理性竞争带来的业绩压力,公司自2024年下半年起…

dubbo 异步化实践

DubboService public class AsyncOrderFacadeImpl implements AsyncOrderFacade {private Logger logger LoggerFactory.getLogger(AsyncOrderFacadeImpl.class);// 构建线程池ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(1000, 1000, 10, TimeUnit.SECOND…

CSS3布局方式介绍

CSS3布局方式介绍 CSS3布局(Layout)系统是现代网页设计中用于构建页面结构和控制元素排列的一组强大工具。CSS3提供了多种布局方式,每种方式都有其适用场景,其中最常用的是Flexbox和CSS Grid。 先看传统上几种布局方式,再较详细的介绍现代布局方式Flexbox和CSS Grid。 传…

MoonBit支持国产芯片开发--性能媲美C

MoonBit支持国产芯片开发–性能媲美C 在 ESP32-C3 上实现生命游戏 过去,我们曾在文章《硬件实现:在ESP32-C6单片机上运行MoonBit WASM-4小游戏》中,展示了如何通过 WebAssembly (WASM) 将 MoonBit 程序移植到物理硬件,初步探索其…

【RAG 框架部署】LangChain-Chatchat (原 Langchain-ChatGLM) + Ollama

目录 前言 一、什么是RAG? 二、环境准备和Ollama搭建 1、conda虚拟环境配置 2、Ollama搭建 三、LangChain-Chatchat搭建 1、框架安装 2、文件配置 3、初始化知识库 4、启动Langchan-Chatchat 前言 由于LangChain-Chatchat的 0.3.0 版本已修改为支持不同模…