[ pwn 学习 ] CTFshow-pwn1
2026-08-22 20:36:38

pwn1

010打开附件 是ELF文件

在虚拟机运行checksec pwn1

1
2
3
4
5
6
7
8
ctfshow@ubuntu:~/Desktop/pwn1wjj$ checksec pwn1
[*] '/home/ctfshow/Desktop/pwn1wjj/pwn1'
Arch: amd64-64-little
RELRO: Full RELRO
Stack: No canary found
NX: NX enabled
PIE: PIE enabled
ctfshow@ubuntu:~/Desktop/pwn1wjj$

checksec查看二进制启用了哪些安全机制。判断该走什么利用方式。

  1. Arch: amd64-64-little

表明是 64 位小端序程序。决定了地址是 8 字节长(而不是 32 位的 4 字节)数据排列顺序是低位在前

  1. RELRO: Full RELRO

可以看到是64位仅关闭Canary保护

  • NX: 不能直接执行栈上的 shellcode,通常走 ROP/ret2libc。
  • Canary: 有金丝雀,溢出必须先泄露或绕过。
  • PIE: 程序地址随机化,需要先泄露地址。
  • RELRO: 影响 GOT 能否被写,用于判断能不能改 GOT

打开附件后反编译可直接看到关键命令:

  • cat /ctfshow_flag
  • 以及提示语:You only need to connect to the remote address with NC to get the flag!

表明连接后不用操作,程序会直接执行cat读取flag

checksec仅用于了解保护情况,但本题不需要利用链,发现system("cat /ctfshow_flag")后直接连接即可

直接在虚拟机nc连接即可获得flag


相关笔记

  • pwn0 — 前置基础:strcpy 溢出原理
  • pwn20 — RELRO 保护详解(No RELRO)
  • pwn21 — Partial RELRO
  • pwn22 — Full RELRO
  • pwn24 — NX 禁用下的 shellcode 注入
  • pwn25 ret2libc 栈溢出利用 (NX 绕过) — NX 开启 + PIE 关闭的利用
  • pwn26 ASLR地址空间布局随机化 — ASLR 地址随机化
上一页
2026-08-22 20:36:38
下一页