有简单过滤防护的文件包含

 一、源码分析

易知$filename处可能会存在文件包含漏洞。但注意到include了一个./check.php文件,猜测可能有过滤。先不管,于是直接使用普通payload来测试一下?filename=php://filter/read=convert.base64-encode/resource=flag.php

果然有过滤防护,看来只能测试过滤情况了

二、过滤测试

使用?filename=1hp://1ilter/1ead=1onvert.1ase64-1ncode/1esource=1lag.1hp逐一测试,将要测试的字符串中的1改回去即可

代码情况?filename=php://filter/1ead=convert.1ase64-1ncode/resource=flag.php,显而易见此处read=convert.base64-encode不能使用

(1)首先对于read的处理可以直接省略:  (201条消息) PHP伪协议_H0ne的博客-CSDN博客_php伪协议

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

两者在效果上区别不大,区别在于使用条件条件:读取需要开启 allow_url_fopen,不加不需要开启 allow_url_include;

(2)接着是对过滤器convert.base64-encode的处理:

这里由于convert还可以使用,所以选择使用其他的过滤器convert.iconv.* 绕过(php://filter中的各种过滤器

  使用方法:convert.iconv.<input-encoding>.<output-encoding> 或者 convert.iconv.<input-encoding>/<output-encoding>

##这里的<input-encoding>和<output-encoding>分别为输入的字符串编码方式和输出的字符串编码方式(字符集)。可选项如下(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)
  • JIS
  • JIS-ms
  • CP50220
  • CP50220raw
  • CP50221
  • CP50222
  • ISO-8859-1*
  • ISO-8859-2*
  • ISO-8859-3*
  • ISO-8859-4*
  • ISO-8859-5*
  • ISO-8859-6*
  • ISO-8859-7*
  • ISO-8859-8*
  • ISO-8859-9*
  • ISO-8859-10*
  • ISO-8859-13*
  • ISO-8859-14*
  • ISO-8859-15*
  • ISO-8859-16*
  • byte2be
  • byte2le
  • byte4be
  • byte4le
  • BASE64
  • HTML-ENTITIES(别名:HTML)
  • 7bit
  • 8bit
  • EUC-CN*
  • CP936
  • GB18030
  • HZ
  • EUC-TW*
  • CP950
  • BIG-5*
  • EUC-KR*
  • UHC(别名:CP949)
  • ISO-2022-KR
  • Windows-1251(别名:CP1251)
  • Windows-1252(别名:CP1252)
  • CP866(别名:IBM866)
  • KOI8-R*
  • KOI8-U*
  • ArmSCII-8(别名:ArmSCII8)

使用payload    ?filename=php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php进行测试,发现对编码方式也有过滤

可以编写脚本或使用工具对编码方式进行爆破。

我自己写的蹩脚脚本可以得到输入字符编码可用UTF-8,输出字符编码可用UCS-2。此处就不放出脚本了。

同时我发现输入字符编码为空时也能得到结果。于是使用工具(Burpsuit)尝试:

1.将请求发送到Intruder模块进行爆破,首先设置爆破位置

2.设置爆破字典

3.根据返回包长度分析结果

当输入字符编码为空,输出字符编码为UTF-32、UCS-4、UCS-4LE、UTF-32LE、UTF-16、UCS-2、UCS-2LE、UTF-16LE时也可以得到结果。

综上可以构造payload为   ?filename=php://filter/convert.iconv.UTF-8.UCS-2/resource=flag.php

三、一点好奇

试着包含出./check.php文件的内容,使用?filename=php://filter/convert.iconv.UTF-8.UCS-2/resource=./check.php结果也能得到文件内容

源代码为�?php
if($_GET["filename"]){
$preg_match_username = 'return preg_match("/base|be|encode|print|zlib|quoted|write|rot13|read|string/i", $_GET["filename"]);';
if (eval($preg_match_username)) {
die("do not hack!");
}
}

从这里可以显而易见的知道过滤情况【base、be(过滤字符编码)、encode、print、zlib、quoted、write、rot13、read、string、i】

攻防世界-file_include(绕过base64)的更多相关文章

  1. 攻防世界-Web_php_include (四种解法)

    攻防世界-Web_php_include   (考察的是文件包含) 打开页面是这样一段代码从代码中得知page中带有php://的都会被替换成空 str_replace()以其他字符替换字符串中的一些 ...

  2. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  3. 攻防世界(三)Web_php_unserialize

    攻防世界系列:Web_php_unserialize 0x01.代码审计 1.类Demo中struct().destruct()函数分别在代码执行开始和结束时调用.而wakeup函数会在代码执行过程中 ...

  4. CTF -攻防世界-crypto新手区(5~11)

    easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间  明明没算错 ...

  5. 记录下做攻防世界的misc题

    0x00 记录一下,代表自己做过 0x01 flag_universe 看简介是来自2018年的百越杯. 将文件下载下来后,就一个flag_universe.pcapng文件,wireshark打开. ...

  6. RSA(攻防世界)Rsa256 -- cr4-poor-rsa

    RSA256 [攻防世界] 题目链接 [RSA256] 下载附件得到两个文件. 猜测第一个 txt 文件 可能为RSA加密密文 ,第二个估计就是密钥.依次打开看看: 果然如此. 目标: 寻找 n.e. ...

  7. RSA脚本环境配置-攻防世界-OldDriver

    [Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...

  8. 攻防世界 web进阶区 ics-06

    攻防世界 ics-06 涉及知识点: (1)php://filter协议 (2)php中preg_replace()函数的漏洞 解析: 进入题目的界面,一通乱点点出了唯一一个可以进入的界面. 观察ur ...

  9. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...

  10. 攻防世界(六)supersqli

    攻防世界系列:supersqli 方法一: 用逗号包裹回显正常,说明存在注入 1';--+(注释符也可用 -- 或 # 发现均未被过滤!) 有order by 语句可知表由2个字段,使用联合查询 (想 ...

随机推荐

  1. CSS3--通过Animation实现简单的手指点击动画

    效果图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...

  2. sqlite没法查出数据

    能够正常插入数据,再次运行插入数据的代码,报错主键重复,说明数据库数据是存在的. 只是插入后再查出就没有数据,显示得是undefined. 检查一下语法,没问题啊,到底啥问题(图中的红色波浪线是ts的 ...

  3. liunx安装docker (自我记录)

    1 安装 安装所需的软件包dnf install -y yum-utils device-mapper-persistent-data lvm2 //官方源地址(比较慢) ~]# dnf config ...

  4. 96、nacos大量日志

    问题描述:access 日志大量打印,相关 Issue 点击这里.主要表现是: {nacos.home}/logs/access_log.2019-xx-xx.log类似格式文件名的日志大量打印,而且 ...

  5. java学习日记20230227-java代码规范

    JAVA代码规范 类,方法的注释要使用javadoc来写 非javadoc的注释往往是给代码维护者看的,着重告诉读者为什么这么写,如何修改,注意什么问题等 使用tab操作,实现缩进,默认整体向右边移动 ...

  6. xml简单操作

    1.创建简单的XML 1 XmlDocument XmlDoc = new XmlDocument(); 2 //XML声明 3 var xmlDeclaration = XmlDoc.CreateX ...

  7. [Python灰帽子-黑客与逆向工程师的Python编程之道]书籍

    [Python灰帽子-黑客与逆向工程师的Python编程之道]PDF高清版免费下载地址 提取码:76aw 内容简介  · · · · · · <Python灰帽子>是由知名安全机构Immu ...

  8. pdf中添加二维码无法扫描解决方案

    正常行驶的bitmap类型的二维码格式,加载到PDF中,将会导致二维码失真,无法扫描. 矢量图可根据尺寸大小进行调节,不会出现失真模糊情况 所用依赖 <PackageReference Incl ...

  9. 下载nvm并安装vue环境

    nvm下载地址 https://github.com/coreybutler/nvm-windows/releases 直接下载 nvm-setup.zip 到任意文件夹下,双击安装 安装过程会提示 ...

  10. Mysql 原生语句

    1.SQL语句 1.1什么是SQL语句: SQL:结构化查询语言.关系数据库语言的国际标准. 各个数据库厂商都支持ISO的SQL标准:如普通话 各个数据库厂商在标准基础做了自己的扩展:如方言 1.2 ...