[CTF题库] 【每周一题】常见文件包含漏洞分析

[复制链接]
查看10850 | 回复4 | 2017-5-17 17:23:48 | 显示全部楼层 |阅读模式
文件包含漏洞是"代码注入"的一种,包含即执行。
  • PHP包含漏洞结合上传漏洞;
  • PHP包含读文件;
  • PHP包含写文件;
  • PHP包含日志文件;
  • PHP截断包含;
  • PHP内置伪协议利用。

PHP中文件包含函数有以下四种:
  • require()
  • require_once()
  • include()
  • include_once()
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。
最简单的漏洞代码:<?php include($_GET[file]);?>
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。
下面是一个简单的php包含漏洞
index.php
[mw_shl_code=php,true]<?php
        include "flag.php";
        $a = @$_REQUEST['hello'];
        eval( "var_dump($a);");
        show_source(__FILE__);
?>[/mw_shl_code]
flag.php
[mw_shl_code=php,true]<?php
        $flag = 'Too Young Too Simple';
        # echo $flag;
        # flag{xxxxxxxxxxxxxxx};
?>[/mw_shl_code]
payload:?hello=show_source("flag.php")
                 ?hello=show_source(flag.'.'.php)

show_source可以高亮代码


有人的地方就有江湖。
回复

使用道具 举报

Nt清晨 | 2017-5-17 18:18:20 | 显示全部楼层
赞~\(≧▽≦)/~。。
回复

使用道具 举报

匿名 LoveYou | 2017-5-17 18:36:57 | 显示全部楼层
赞赞
回复

使用道具 举报

匿名 GGla | 2017-5-17 19:47:53 | 显示全部楼层
赞b( ̄▽ ̄)d
回复

使用道具 举报

匿名 KSaint | 2017-5-27 17:10:45 | 显示全部楼层
赞一个,新人报道
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

匿名

93

主题

224

帖子

3157

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3157