php远程包含木马,文件包含漏洞之本地包含和远程包含

文件包含漏洞介绍:

程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP、ASP、ASP.NET程序中却非常少,甚至没有,这是有些语言设计的弊端。在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。

漏洞成因:

文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就

可能导致意外的文件泄露甚至恶意的代码注入。当被包含的文件在服务器本地时,就形成的本地文件包含漏洞,被包涵的文件在第三方服务是,就形成了远程文件包 含漏洞。

漏洞危害:

执行恶意代码、包含恶意文件控制网站、甚至控制网站服务器等。

本地包含漏洞:

代码:<?PHP

$file=@$_GET['name'];

if($file){

include $file;

}

?>

以以上这个代码为例:

txt文件代码为:<?php

phpinfo();

?>

我们可以看到txt文件里的内容以php文件的方式执行了;如下图所示:

a51b13c9de36375c0ecdce7daa44dd64.png

2.jpg是一个图片的一句话***;

3e054a09a6cf9c089a93763d6a0dedd2.png

用菜刀可以直接连接,也就是说不管后缀是什么样,最后都会以php的形式执行。

但是有时候会这样,这个在ISCC国赛中遇到了,就是在最后会自动加入.php,非常烦人。

代码2:<?php

Include  $_GET['page'].".php"

?>

执行结果如下图:

d0a58c599d270d594e9e5f95f8bf281d.png

还是报错。

497f59873af01966addcce74b0cc8956.png

解决办法:%00截断

利用环境:php版本<5.3magic_quotes_gpc取消的(magic_quotes_gpc = off)

0dfca45711e8266d1d25b3f8feb6f8a8.png

远程包含:

远程的文件名不能为php可解析的扩展名(php、php5..),而且php.ini中allow_url_fopen和allow_url_include为On才可以。

a3deb6d12709bb6fffc22e458f8cd932.png

如果是遇到这种情况:

ceb285695bee97ae91025eedb62f1b2e.png可以用“?”或者“%00”阶段;

读取出来的是base64编码的,进行解码就行了。

8d25c7d18b30c7d0591ab836edeefffd.png

php://input的用法php://input

a7b397d5de9381d56d6fd234aa8b8b77.png

伪协议绕过大小写:<?php

if(isset($_GET['f'])){

if(strpos($_GET['f'],"php") !== False){

die("error...");

}

else{

include($_GET['f'] . '.php');

}

}

?>

readfile读取文件,不可以getshell<?php

@readfile($_GET["file"]);

?>

总结:这些在iscc的国赛赛中出现过,如果当时会阶段或者会读取源码,也就能获奖了,学无止境,加油吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值