专栏首页人工智能机器学习CTF从入门到提升(十一)文件包含
原创

CTF从入门到提升(十一)文件包含

本次分享为常见文件包含情况以及zip、phar相关问题

​​

 Include  stdio.h

Import  request

很多网站的admin(管理员)入口和user(用户)入口是分开的,登陆过程所调用的函数可能都是同一个函数,最后操作的表不同。如果调用的是同一个函数,网站一般分开两个文件存储:admin目录和user目录。在不同文件中,如果没有使用“文件包含”这个操作,同一个函数就会出现在两个文件中增加重复工作的工作量。但是如果使用“文件包含”操作,直接调用函数就可以了。

如果不用文件包含需要重复写,所有的内容都写在一个文件里面,文件会非常大,维护起来也非常难。

文件包含产生了之后,相应的漏洞也是在特定几个条件下才会产生。

为了代码灵活将包含的文件设置成一个变量进行动态调用,但却导致用户可以去恶意调用,造成了文件包含漏洞。 

比如说index.php?page=aaa&func=bbb调用.php?page=aaa中的func=bbb函数。

相关函数

不一定要去包含这种php文件,只要里头包含完整的块就可以。我们可以控制然被包含文件的内容,比如插入一段php代码, 或者压缩包,压缩包需要配合一些伪协议。

本地文件包含

具体场景——上传的可控文件

验证一下包含的效果:

远程文件包含

?在请求过程中作为一个参数传递给aaa.com/1.txt?a.php,1.txt只要请求的东西不被这个参数影响,后面传什么参数进去,其实都没有关系。

如果是远程文件包含就可以做绕过,但你要注意到远程包含的时候,如果说你要去包含远程文件,http中支持的协议就是http https ftp这三个,问号绕过和之前%00截断的道理是有点类似的。HTTP中文件包含用的最多的还是伪协议,比如说file重点看一下。

具体场景——伪协议

举栗子

up load看起来像一个文件名的前缀, 

它就会返回一个目录,这个目录的区包含文件,它支持伪协议,那可以用这个形式去试一下,后面跟上一个井号,这里存在一个编码问题,实际传的就是.php,要把他本来带的这个.php给去掉,再去这样执行,你就会发现它执行成功了,里面的文件换成一个我需要的后门就可以了,打包和部署可以免去大量的麻烦。

配合phar协议来,我们把zip换成phar这样来试试看,发现执行成功。

这就是phar的一个作用,如果说你在一个点上能够上传phar包,但是你又不知道如何去构造phar包,你就可以直接找个压缩包,改了后缀名改成phar上传,再配合phar伪协议就可以了。

创立了一个phpinfor.php,然后把它压缩,压缩之后再改成jpg,上传这个文件后它属于哪种文件类型呢?

还是可以成功的。

以上内容参考安全牛课堂《CTF从入门到提升

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CTFweb类型(十九)15位、7位可控字符下的任意命令执行

    ​​某些特殊情况下命令执行的Getshell中对应某个函数的内容可控,可控字符长度分为长可控和短可控。我们先来看15个字符可控。

    牛油果
  • CTF从入门到提升(十三)文件包含session及例题详解

    通过上传一个orange作为key传一个值传给这个变量,放到file函数中,再去比对file函数读取结果文件中的第一行0前面六个字符串是否匹配,如果是orang...

    牛油果
  • CTF从入门到提升(五) 部分截取函数及bool型盲注相关例题分析

    语句结构id=1 ,我们去做判断的时候是id=1 and 1=1,and 1=1的本质是返回一个true,true可以用1来代替,正常回显。我们很多时候就会去接...

    牛油果
  • Facebook 推介 TensorMask:一种新的密集滑动窗口分割技术

    近日,Facebook 发布了一项新的研究,该研究探索了实例分割的新方法。与掩模 R-CNN 驱动的标准方法相比,TunSoMeM 为探索分割研究提供了新的方向...

    AI研习社
  • python模块

    mwangblog
  • MySQL是如何利用索引的

    在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑。例如:

    用户1516716
  • Elasticsearch API 使用介绍

    API文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.htm...

    shaonbean
  • 利用 Apache 的解析机制来植入webshell

    这篇 getshell 是上一篇的一个续篇。在上一篇中提及的 getshell 的方式依赖于修改任意文件漏洞,假如任意文件修改被修补了,那么连带 getshel...

    信安之路
  • 如何在 Debian 10 上安装 Visual Studio Code

    Visual Studio Code 是一个由微软开发的开源的,跨平台的代码编辑器。它包含内建的调试支持,嵌入的 Git 版本控制,语法高亮,代码自动完成,集成...

    雪梦科技
  • C++ push方法与push_back方法

    push与push_back是STL中常见的方法,都是向数据结构中添加元素。初识STL,对于添加元素的方法以产生混淆,这里暂对两种方法作出比较分析。此外,本文还...

    于小勇

扫码关注云+社区

领取腾讯云代金券