题目来源:buuctf [HarekazeCTF2019]Avatar Uploader 2
一、打开靶机,整理信息
跟Avatar Uploader 1 题目长得一样,先上传相同文件看看情况,另外这道题还有源码,可以看看
二、解题思路
step 1:上传同类型题目文件,看是否有新信息
成功上传,但是没有flag信息,所以还得从源码下手,毕竟进阶版肯定没那么简单
step 2:分析源码
我认为应该学习一下文件名隐藏的信息
config.php
主要存储应用程序的各种配置信息,为整个项目提供统一的参数设置,确保不同部分使用相同的配置。涵盖数据库连接信息(主机名、用户名、密码、数据库名、端口等)、应用程序基础设置(网站名称、URL、编码格式、时区等)、安全相关配置(加密密钥、会话设置、CSRF 令牌设置等)、第三方服务配置(邮件服务器、支付网关、社交媒体 API 等服务的认证信息和参数)以及调试和日志配置(调试模式开关、日志文件路径、日志级别等)。
index.php
作为网站的入口文件,承担着初始化项目运行环境的任务,如包含配置文件、启动会话、设置错误报告级别等。它还负责路由分发,根据用户请求的参数或 URL 特征,将请求导向不同的功能模块或页面。此外,该文件会展示网站的首页内容,可能会从数据库查询数据,结合 HTML 和模板引擎生成动态页面,同时加载必要的 CSS、JavaScript 等资源文件。
upload.php
主要负责处理文件上传的功能。它会接收用户通过表单上传的文件,对上传的文件进行验证,包括文件类型、文件大小、文件名合法性等方面的检查。验证通过后,会将文件移动到指定的存储目录,并可能对文件名进行处理,如添加时间戳避免重名。此外,还可能会记录文件上传的相关信息到数据库,如文件名、上传时间、文件路径等,最后根据上传结果返回相应的提示信息给用户。
signin.php
主要处理用户登录相关的逻辑。接收用户输入的信息,接着对输入数据进行验证,检查格式是否正确、是否为空等(正则表达式)。然后会将用户输入的信息与数据库中存储的用户信息进行比对验证,验证成功后,会设置用户会话,保存用户的登录状态和相关信息,最后根据验证结果进行页面跳转,成功则跳转到用户主页等页面,失败则返回登录页面并给出错误提示。
signout.php
专注于处理用户退出登录的操作。它会清除当前用户的会话信息,销毁会话中的所有数据,以确保用户的登录状态被正确清除。此外,还可能会删除与用户登录相关的 Cookie 信息,最后将用户重定向到登录页面或网站首页。
theme.php
主要用于管理网站的主题设置。
所以我们重点要看的就是config.php、index.php、upload.php文件
先帝创业未半而源码打不开,这里附上大佬的wp,改日再来[HarekazeCTF2019]Avatar Uploader 2(include phar+代码审计) |