Web安全攻防世界03 file_include(江苏工匠杯)

问题描述

题目要求如下~

Web安全攻防世界03 file_include(江苏工匠杯)_第1张图片

依旧是参考大佬的WP有所补充,内容对小白友好~


原因分析:

按照老规矩分析源码~

解题思路如下:

根据第3行  include("./check.php");

check.php这个文件大概就是检查输入的内容有没有敏感字符,通过绕过提高难度~所以先查询check.php的内容,看看里面到底有什么东西~


解决方案:

工具:无

参考钟冕的WP显示网页源码

1 初步访问

  我们先通过最古老传统的方式访问一下./check.php——

  /?filename=php://filter/read=convert.base64-encode/resource=./check.php

  1)"filename=php://filter/read=convert.base64-encode/resource="是以Base64的格式读取文件内容的最常用格式;

  2)源码第3行 ./check.php 直接粘贴在后面就好,是读取的文件名称及路径~

Web安全攻防世界03 file_include(江苏工匠杯)_第2张图片

     嗯,果然毫无悬念地报错了...这显然不是我们想要的结果...

2 绕过POC

我们重新分析一下这段很长的经典代码,看看有没有可以绕过的点——

filename=php://filter/read=convert.base64-encode/resource=./check.php

1)filename= 这个是源码第5行的文件名,暂时没有绕过的点;

2)php://filter/read 这个是对于文件读取的操作,除了读以外,还可以替换为php://filter/write <对于文件写的操作>php://filter<对于文件读或写的操作>~(截图摘自:PHP: php:// - Manual)

      我们优先考虑第三种格式php://filter,代码字数越少被拦截的可能性越低。

3)=convert.base64-encode 这个是对于编码格式的操作,将读取到的内容以Base64的格式加密,可以替换为convert.quoted-printable-encodeconvert.iconv..~

      对于转换过滤器convert感兴趣可参考链接~PHP: 转换过滤器 - Manual

      除了convert转换过滤器以外,php还有String字符串过滤器、Zlib压缩过滤器,可以近似执行相关的功能,相互替换~PHP: 可用过滤器列表 - Manual

      我们优先考虑第三种格式convert.iconv..,它和原始的代码重复字数少一些~其中input-encoding、output-encoding支持的编码格式如下图所示~

Web安全攻防世界03 file_include(江苏工匠杯)_第3张图片Web安全攻防世界03 file_include(江苏工匠杯)_第4张图片

 ↑图片内容出自:PHP: Supported Character Encodings - Manual,这次解题先用最常见的UTF-8、UTF-16试一试~

4)/resource=./check.php resource是读取文件必选项,./check.php是题目源代码第3行的地址,暂时没有绕过的点~

  所以综上,我们暂时替换成这样的格式读取./check.php

  filename=php://filter/convert.iconv.utf8.utf16/resource=./check.php

http://61.147.171.105:58114/?filename=php://filter/convert.iconv.utf8.utf16/resource=./check.php

 贴到url后面,执行结果如下~ 

Web安全攻防世界03 file_include(江苏工匠杯)_第5张图片

我们分析一下check.php代码,大概是这个意思~

证明现在的格式能用以后,下一步是获取flag的文件路径,假设这个路径是最常见的flag.php,代码如下~

http://61.147.171.105:58114/?filename=php://filter/convert.iconv.utf8.utf16/resource=flag.php

  执行结果如下图所示~

Web安全攻防世界03 file_include(江苏工匠杯)_第6张图片

  $flag='cyberpeace{712054cb876bb5785f3b2e558168afc9}';

博文写得模糊或者有误之处,欢迎留言讨论与批评~

码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)

你可能感兴趣的:(#,攻防世界,网络,web安全,php)