首页 > 其他分享 >攻防世界web新手题fileinclude&fileclude

攻防世界web新手题fileinclude&fileclude

时间:2024-06-16 10:31:04浏览次数:11  
标签:web 文件 data base64 fileclude flag fileinclude php file2

题目1:fileinclude

工具:

Burpsuite

Hackbar V2

火狐浏览器的扩展应用

解题关键:

学会文件包含的命令以及学会读懂php脚本

解题过程:

首先对该网站进行抓包,发现潜藏的php脚本

这段代码的作用是:

  1. 检查是否 display_errors 配置项被设置为打开,如果没有则将其打开,这样可以在页面上显示所有错误信息。

  2. 将错误报告级别设置为 E_ALL,这样会显示所有类型的错误信息。

  3. 获取名为 'language' 的 cookie 的值赋给变量 $lan。

  4. 如果 'language' 的 cookie 不存在,则设置 'language' 的 cookie 值为 'english',并包含名为 'english.php' 的文件。

  5. 如果 'language' 的 cookie 存在,则根据 'language' 的 cookie 值包含相应的文件。

  6. 使用 file_get_contents 函数读取 'index.php' 文件的内容,并将其赋给变量 $x。

  7. 最后,以文本形式输出从 'index.php' 文件中读取到的内容。

其实意味着这个时候cookie就是我们需要继续进行修改的位置,而language是我们需要进行提交的参数,而我们要做的是获取flag.php的值,首先尝试直接读取php文件(一般无法实现),一般使用php://filter/进行文件访问

php://filter//read=/var/www/html/flag.php

使用hackbar提交cookie,发现文件不存在

更换将文件内容进行base64编码后显示在浏览器上的命令(最后使用flag.php还是flag应情况而确定,需要都尝试)

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

得到一串base64编码,将其解码得到flag

题目2:fileclude:

好多file呀!

解题关键:

学会文件包含漏洞的各种命令

解题过程:

进入网页是一串php脚本,接下来我们尝试读懂代码

这段代码是一个简单的PHP脚本。

它首先包含了名为"flag.php"的文件,然后使用highlight_file(__FILE__)来显示当前的PHP脚本文件的代码。

接着,它检查是否有名为"file1"和"file2"的GET参数被设置。如果这两个参数都不为空,它会尝试读取file2文件的内容,如果内容等于"hello ctf",那么它将包含file1文件的内容。如果file1和file2参数不是都不为空,将会输出"NONONO"并终止脚本的执行。

结合题目我们应该意识到我们需要包含flag.php文件接着file2还需要等于"hello ctf",并且file1与file2都不为空才行。那我们可以令file1包含flag.php,并且用到上一题使用的poc使用base64编码获取flag的内容。

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

 file2内容等于"hello ctf",但我们看到代码中的file_get_contents()函数就意味着file2不能直接等于该内容,而需要使用文件包含的方式,针对于此我们可以使用考虑将该内容构造数据流,使用data:// 与包含函数结合时,让用户来控制输入流,用户输入的data://流会被当作php文件执行。

这里我们区分一下data://与php://input:

1.php://input:

  • php://input 是一个输入流,用于获取请求体中的原始数据。它通常用于接收 POST 请求中的数据,而不是通过GET参数传递的数据。
  • php://input 返回的是请求体中的原始数据,未经任何处理,通常是一个字符串形式的数据。

2.data://:

  • data:// 是一个数据流封装器,用于访问数据的输入输出流。它可以用于访问各种类型的数据,比如字符串、文件、变量等。
  • data://允许访问各种类型的数据,并且可以指定数据类型和编码格式。

执行的命令是

?file2=data://text/plain,hello ctf 

 这两个命令都不为空则是将这两个命令同时get

组合起来是

61.147.171.105:50210/?file1=php://filter//read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf

 这里有一串base64编码,将其解密得到flag

总结: 

我们要学会使用各种文件包含命令,并且在做题过程中不断积累自己的poc。

标签:web,文件,data,base64,fileclude,flag,fileinclude,php,file2
From: https://blog.csdn.net/qq_52481261/article/details/139709667

相关文章

  • 基于web校园学习资料共享平台系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • webshell获取总结(cms获取方法、非cms获取方法、中间件拿Webshell方法)
    目录前期准备:1、cookices靶场网站搭建: 2、dedecms靶场环境搭建:获取Webshell方法总结:一、CMS获取Webshell方法 二、非CMS获取Webshell方法1、数据库备份获取Webshell例如:2、抓包上传获取Webshell3、Sql命令获取Webshell例如:4、模板修改获取Webshell例如:5、插入......
  • web刷题记录(6)
    题[GXYCTF2019]BabyUpload文件上传,先传个普通的一句话木马试试,发现提示被限制了,文件后缀不可以有ph,那么php3,php5,phtml等后缀自然无法使用了        那这里的思路我觉得应该是,先判断到底是文件内容被黑名单了,还是文件后缀被黑名单了,一句话来说就是它审核的是文......
  • JavaWeb课程设计/期末大作业-电影网站+源代码+文档说明+数据库sql
    文章目录源码下载地址项目介绍项目功能界面预览项目备注源码下载地址源码下载地址点击这里下载代码项目介绍项目功能界面预览项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科......
  • WebGoC题解(4) 115.第5题 同心圆(比赛模拟题)
    题目描述学校准备在颁奖会把这次比赛的前10名的成绩用崭新的形状表示出来,这个艰巨的任务交给了小C。为了和以往不同,小C决定用每个学生的成绩作为半径画同心圆来表示。这个创新的举动需要你使用GoC编程,在一个黑色实心圆背景下,用10个红色圆表示成绩。具体形状参见输入输出样例......
  • IDEA创建web项目
    IDEA创建web项目第一步:创建一个空项目第二步:在刚刚创建的项目下创建一个子模块第三步:在子模块中引入web创建结果如下:这里我们需要把这个目录移到main目录下,并改名为webapp,结果如下将pom文件中的项目打包方式设置为war包第四步:检查第五步:测试1、创建一......
  • go,无法安装 gorilla websocket
    go中没有websocket这个库,需要安装第三方的库,这里选择常用的gorilla/websocket,如下:E:\Projects\CSMS\SK-CSMS\CentralSystem>goget-ugithub.com/gorilla/websocketgo:modulegithub.com/gorilla/websocket:Get"https://proxy.golang.org/github.com/gorilla/websocke......
  • Java Web学习笔记55——DQL基本查询
    DQL:DQL英文全称DataQueryLanguage(数据查询语言),用来查询数据库表中的数据。关键字:SELECT。SELECT是最为常见,最为重要的操作。查询在一个系统中,能占据90%的以上。查询也是最为复杂的一个操作。 查询五子句。准备数据: --DQL-基本查询--1.查询指定字......
  • 基于java jsp ssm的基于Java Web的智慧社区信息平台的设计与实现(源码+LW+部署讲解)
    前言......
  • java web 开发框架编
    学习web框架上开发需要的是安装 mysql8.0 idea2022git 2.2.23 node16以上(新版本不好拉有些库了)jdk最好是17以上jdk8也是行的,反正不管新版如何发布,我们都是你发任你发,永远jjava8第一步新建项目一定要设文件编吗,然后才开如开发2.配置maven  <settingsxmlns=......