文件包含漏洞的一些使用

根据比赛题目自己写的PHP文件,顺便把答案也做一下,简单记录。


文件包含漏洞攻防

任务环境说明

  • 服务器场景:18fileinclude (实际是本机自己搭建的)
  • 服务器场景操作系统:Microsoft Windows Server 2003 (实际是win10)
  • 服务器场景安装服务:apache2.4+php5.4+mysql 集成环境 (实际是Apache/2.4.39 + php7.3.4)

    第一题:文件包含,代码审计

  • 用 PC 机访问 SDC 中的 18 fileinclude,验证其存在本地文件包含漏洞,使页面包含 C 盘根目录下的 flag.txt 文件,并对 url 及 flag 值进行截图。
  • 访问后如图所示,依次查看了tips和flag发现是需要审计代码的。
    文件包含漏洞的一些使用_第1张图片
  • 这里的过滤的比较简单,在传入的文件中不可以出现http或者HTTP,其次包含的路径的主机地址一定要是localhost。构造payload直接访问即可。文件包含漏洞的一些使用_第2张图片
  • 总结,这里主要说下parse_url函数,此函数用来处理url链接的,将源代码中打印$url的注释拿掉后,效果如下显示:
    文件包含漏洞的一些使用_第3张图片
    可以很清楚的看到此函数将url链接分成了好几个部分:协议、主机、路径。

    第二题,php://input

  • 通过 php 输入流找到并查看当前网站根目录下的 flag 文件(文件名中含有特殊字符)内容,并对 url 及 flag 值进行截图。
  • 通过php://input传入命令查找到文件。
    文件包含漏洞的一些使用_第4张图片
  • 由于这个文件不是PHP后缀的,所以直接访问是空白的,所以再用文件包含读文件内容。
    文件包含漏洞的一些使用_第5张图片
  • 总结,php://input是用来接收数据流的,具体的可以去看看https://www.php.net/manual/zh/wrappers.php.php,后面还会用php://filter函数。另外,post里面数据简单说明下,scandir()是用来扫描目录下的文件的函数,而"."代表当前目录。

    第三题,php://filter

  • 利用 php 流读取藏在 flag.php 页面中的 flag 值,并对 flag 值进行截图。
  • 当我们直接访问flag.php时,找不到任何内容,但是题目说了很清楚了,flag值就在源码中,但是审计页面又看到php源码,所以这个时候就用php://filter将flag.php进行base64编码处理,这样浏览器就无法执行php了,只会显示加密后的密文,再用hackbar解密出就可以看到明文的flag了。
    文件包含漏洞的一些使用_第6张图片
  • 总结,php://filter的应用还有很多,不仅仅是做编码,以后碰到了再写吧。

    第四题,php的zip://

  • 利用 php 封装协议查看压缩文件中的 zip.txt 文件,并对 url 及 flag 值进行截图。
  • 首先利用php://input查看本地的文件,找到压缩文件。
    文件包含漏洞的一些使用_第7张图片
  • 然后继续查看压缩文件所在的路径
    文件包含漏洞的一些使用_第8张图片
  • 拿到路径后,利用zip://直接读取题目中告诉我们的zip.txt文件。
    文件包含漏洞的一些使用_第9张图片
  • 总结flag.zip%23zip.txt指的是flag.zip里面的zip.txt文件,但是传输的时候不能用#,就只能用%23代替。

    第五题,远程文件包含

  • 利用远程文件包含漏洞向windows服务器上写入名为exp.php的一句话木马,并对在 PC 机上创建的文件内容以及远程包含时的 url 进行截图。
  • 一般远程文件包含都是通过http来进行实现的,但是这里的第一题当中就把http给过滤了,所以就通过ftp来进行远程使用。
  • 先在本地写好文件fi.txt,内容为 "); ?>,然后直接进行远程包含。
    文件包含漏洞的一些使用_第10张图片
  • 成功后,直接用菜刀连接即可。
    文件包含漏洞的一些使用_第11张图片
  • 总结一句话里面需要多加一个\,不然会格式错误。
  • 你可能感兴趣的:(#,WEB安全)