TSQL 数据类型转换
TSQL数据类型转换常用的转换函数是cast和convert,用于把表达式得出的值的类型转换成另一个数据类型,如果转换失败,该函数抛出错误,导致整个事务回滚。在SQLServer2012版本中,新增两个容错的转换函数:try_cast和try_convert,如果转换操作失败,该函数返回null,不会导致整个事务失败,事务继续执行下去。注意:对于SQLServer显式定义的不合法转换,try_cast和try_convert会失败,抛出错误信息:Explicitconversionfromdatatypeinttodateisnotallowed.selecttry_cast(1asdate)转换函数是parse和try_parse,只用于把字符类型转换为date/time和数字类型,在解析字符时会产生一定的性能消耗。一,时间类型转换在把日期/时间类型转换成字符串时,常用的转换函数是Convert和Cast,convert函数能够在一定程度上显式控制日期/时间的显示格式,
【SqlServer系列】浅谈SQL Server事务与锁(上篇)
一概述在数据库方面,对于非DBA的程序员来说,事务与锁是一大难点,针对该难点,本篇文章试图采用图文的方式来与大家一起探讨。“浅谈SQLServer事务与锁”这个专题共分两篇,上篇主讲事务及事务一致性问题,并简略的提及一下锁的种类和锁的控制级别。下篇主讲SQLServer中的锁机制,锁控制级别和死锁的若干问题。二事务1何为事务预览众多书籍,对于事务的定义,不同文献不同作者对其虽有细微差别却大致统一,我们将其抽象概括为:事务:指封装且执行单个或多个操作的单个工作单元,在SqlServer中,其定义表现为显示定义和隐式定义两种方式。基于如上的定义,我们可以将事务解剖拆分为如下几个点:(1)事务是单个工作单元,这一定义,才使事务具有ACID属性(2)事务是封装操作的,如封装基本的CRUD操作1--事务2BeginTran3SELECT*FROMUserInfo4INSERTINTOUserInfoVALUES('Alan_beijing',35)5UPDATEU
Asp.net core 2.0.1 Razor 的使用学习笔记(四)
ASP.netcore2.0.1中asp.netidentity2.0.1的基本使用(三)—用户注册一、修改用户注册1、打开Pages文件夹》Account》Register.cshtml,然后双击Register.cshtml.cs找到publicclassInputModel,在这里个类里添加UserName属性[Required][StringLength(20,ErrorMessage="{0}必须至少包含{2}个字符,最多20个字符。",MinimumLength=6)][Display(Name="用户账号")][DataType(DataType.Text)][RegularExpression("^[a-zA-Z0-9_]{6,20}$",ErrorMessage="用户名由字母或数字组成。")]publicstringUserName{get;set;}这里说明下,Razor页面模式跟mvc在此出现了严重的不同。但就代码说没有什么不同几乎完全一样,但是
千倍速一句话密码爆破工具awBruter
0x00概述大概1年前就出现了可以让一句话木马密码爆破速度提升千倍的技术,但由于遇到一句话木马的几率太小,没机会操作一番,前段时间遇到了疑似一句话木马,就参考网上两篇大神的文章(见参考资料)研究下这个技术。0x01原理其原理就是apache和iis可以多参数提交,apache最多同时提交1000个参数,本人试过超过1000就报错了。而iis据说可以提交5883个参数,但本人win7下的iis7.5尝试提交3700个参数就500错误了,郁闷。那么就可以批量提交千个参数去判断哪个是一句话的密码,效率就比一个一个参数提交提高了千倍!0x02awBruter根据上述原理写了这个可以千倍速爆破一句话密码的工具。地址:https://github.com/theLSA/awBruter效果图:pythonawBruter.py-hpythonawBruter.py-u“http://192.168.43.173/onewordshell.asp”pythonawBruter.py-u“http
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.一丶IDT解析.我们知道.IDT表中存放着各种中断信息.比如当我们调用int3的时候,则会调用IDT表中的第三项来进行调用.而函数地址则是操作系统给的.因为中断是CPU和操作系统通信的一种方式.查看IDTR(IDT表)第三项.IDT首地址给出了,其中表项是7ff我们每一项是8个字节,所以7ff/8=255项.也就是IDT表中是0-256其中重要的是有个int3我们对其u,则可以看int3的指令的.当然,我们也可以自己计算.不用通过!idt3给.我们说过,IDT表中存放的是门描述符号,也就是说真正的函数地址我们要自己查分.拆分开和上面一样.,可以简单看下下面这张表.其中微软以前用到的是2E的区域,也就是说.2E的表项是微软放函数地址的地方.二丶查看int2E区域.对其反汇编.API,是我们的KiSystemService我们可以看一下zw系列的API,其内部调用的
SQL Server 安全篇——数据层面安全性(2)——所有权链接( Ownership Chaining)
接上文:SQLServer安全篇——数据层面安全性(1)——架构OwnershipChainingSQLServer2016提供了一种叫行级安全性(row-levelsecurity,RLS)的功能,但是这种功能是比较有限制的,标准的方式是使用视图或存储过程来限制数据返回。并且通过对视图或存储过程的授权,可以使得用户不需要直接访问底层实体表。这种方式的实现基础来自于一个叫“所有权链接(OwnershipChaining)”。当多个对象被一个查询顺序调用时,SQLServer会把这个视为一个链。当你把对象“链”在一起时,权限检查则会变得很复杂,特别是要依据对象的“架构”。比如有一个视图V1,访问两个表:t1和t2。如果三个对象都属于同一个拥有者,那么在SELECT视图时,视图会对调用者进行权限校验,但是在表上的权限则不会进行校验。意味着如果想授权另一个用户UserB对表T1的特定行有访问权限,可以创建一个视图并查询用户被允许的那些行。此时,用户可以借助视图来返回数据而不用直接访问表。但是所有者链接也会在某些
SQL Server(MySQL)中的联合主键(联合索引) 索引分析
最近有人问到这个问题,之前也一直没有深究联合索引具体使用逻辑,查阅多篇文章,并经过测试,得出一些结论测试环境:SQLServer2008R2测试结果与MySql联合索引查询机制类似,可以认为MySQL是一样的原理====================================================联合索引概念:当系统中某几个字段经常要做查询,并且数据量较大,达到百万级别,可多个字段建成索引使用规则:1.最左原则,根据索引字段,由左往右依次and(where字段很重要,从左往右)2.Or不会使用联合索引3.where语句中查询字段包含全部索引字段,字段顺序无关,可随意先后4.数据量较少时,一般不会使用索引,数据库本身机制会自动判断是否使用索引=====================================================测试脚本(部分借鉴其他作者的脚本):/*创建测试数据表*/creat
SQL Server 安全篇——数据层面安全性(3)——模拟(Impersonation)
接上文:SQLServer安全篇——数据层面安全性(2)——所有权链接(OwnershipChaining)模拟是指在不同安全主体的上下文下执行T-SQL语句或代码模块的做法。用来最小化权限授予和授予权限的用户数,但是不影响执行时提升到所需的权限。实际上,在会话或模块的执行期间,模拟起到了用户或登录名切换的过程。也可以不严谨地认为,发起模拟的用户A借用B的身份执行了B有权限但A没权限做的事。在SQLServer中,可以使用EXECUTEAS子句来实现模拟功能。EXECUTEAS可以位于存储过、函数、DML触发器的头部。也可以用于会话过程切换安全上下文。下表是EXECUTEAS可用场景:用处上下文规范(ContextSpecification)Session(会话)
SQL Server安全专题
随着大数据、云计算的兴起跟数据量的几乎全量存储,使得安全性越来越受重视。所以这里根据工作经历、多本专家书籍跟官方文档整理出一个安全系列专题,但是毕竟安全这个东西,很广、很深,而且涉及从行政手段、技术手段,从网络到硬件到操作系统最后到数据库甚至行列的内容,无法真正写一个完完全全的专题,更多地是希望起到抛砖引玉的作用。另外由于某种目的(应该在2018年就会揭开答案),有某些部分应该写进去但是我特意没有写,不过我觉得写进去的应该已经足够应付大部分情况。本系列主要版本集中在2008~2014中。最后,由于专题部分都很长,耗时也会相对长一点,在这个过程中,不排除会改动已发布的内容(主要是debug和丰富内容),所以希望读者能够不定期查看。备注:由于博客的编辑器反复变动,实在没有精力在短时间内调整成好看的样子,希望读者不要过于介意布局是否美观。我会尽量不停地修复和改进。这一篇是一个“目录”,为了让读者有一个概览和快速链接,已经写完的文章会同步添加链接安全模型篇SQLServer安全篇——SQLServer安全模型
MSSQL不使用xp_cmdshell执行命令并获取回显的两种方法
之前写过一篇文章介绍的是MSSQL里使用xp_cmdshell来执行命令的两种姿势:http://lu4n.com/mssql-sqli-get-os-shell-with-xp_cmdshell/很多时候xp_cmdshell会被禁用删除之类的,恢复方法百度也能搜到。这里再额外介绍两种MSSQL执行命令并获取回显的方法。1.COM参考文档:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/ole-automation-stored-procedures-transact-sqlM$做的东西,怎么可能不能直接调COM呢。百度上相关的资料大多数就是直接用wscript.shellrun执行命令重定向输出到文件,都是转载的,早已不知道原始出处。wscript.shell明明还有一个exec方法能直接获取输出好么。。于是我翻了下微软文档,写了试试确实可以:declare@luanint,@execi
Rootkit 核心技术——利用 nt!_MDL(内存描述符链表)突破 SSDT(系统服务描述符表)的只读访问限制...
Rootkit核心技术——利用nt!_MDL(内存描述符链表)突破SSDT(系统服务描述符表)的只读访问限制PartI————————————————————————————————————————————————————————在rootkit与恶意软件开发中有一项基本需求,那就是hookWindows内核的系统服务描述符表(下称SSDT),把该表中的特定系统服务函数替换成我们自己实现的恶意例程;当然,为了确保系统能够正常运作,我们需要事先用一个函数指针保存原始的系统服务,并且在我们恶意例程的逻辑中调用这个函数指针,此后才能进行hook,否则损坏的内核代码与数据结构将导致一个BugCheck(俗称的蓝屏)。尽管64位Windows引入了像是PatchGuard的技术,实时监控关键的内核数据,包括但不限于SSDT,IDT,GDT。。。等等,保证其完整性,但在32系统上修改SSDT是经常会遇到的场景,所以本文还是对此做出了介绍。OS一般在系统初始化阶段把SSDT
SQL Server 安全篇——服务帐号安全性(1)——服务帐号类型
本文属于SQLServer安全专题系列服务帐号本质是一个操作系统帐号,每个SQLServer服务都需要配置一个服务帐号,并使用这个帐号来运行服务。本篇将介绍关于服务帐号的一些安全方面的内容。类型:截至到SQL2016,SQLServer支持下面类型的帐号作为服务帐号:LocalUser:创建在本机的Windows帐号。DomainUser:域用户。Built-inaccounts:包括NETWORKSERVICE、LOCALSERVICE和LOCALSYSTEM这三类在Windows中总是可用的帐号ManagedServiceAccounts(MSAs):VirtualAccounts:从Windows2008R2和Win7开始引入,在本地服务器创建,但是可以使用计算机帐号的证书访问域资源。VirtualAccounts:过去,管理员通常在本地服务帐号(LOCALSERVICE)的上下文中运行服务(如SQLServer、Exchange或IIS)的环境中的服务之间的隔离。虚拟帐号的出
SqlServer--用代码创建和删除数据库和表
创建数据库,创建表,设置主键数据库的分离和附加MSSQLServer的每个数据库包含:1个主数据文件(.mdf)必须。1个事务日志文件(.ldf)必须。可以包含:任意多个次要数据文件(.ndf)多个事务日志文件文件组:可将多个数据文件逻辑的分到一组,方便日后管理维护(备份、将表建在指定的文件组上等等。)--1.创建一个数据库(直接创建一个数据库,没有设置任何特殊选项,都是使用默认的。)createdatabaseMyDatabase2;--2.删除数据库dropdatabaseMyDatabase2;--msSqlServer不区分大小写DROPDATABASEMYSECONDDATABASE2;--3.创建数据库的时候设置一些参数选项createdatabaseMyDatabase2onprimary--配置主数据文件的选项(name='MyDatabase2',--主数据文件的逻辑名称filename='F:\DATABASE1\MyDatabase2.m
如何在sqlserver建立新用户并关联相应的数据库
葡萄喃喃呓语哈喽,各位家人们,大家晚上好,我是养森商学院的院长,孙茂林。非常高兴,今天晚上在社群当中和我们全中国所有的养生家人以及我们海外的养生侨胞。一起去分享我们的线上课程。我本人特别高兴,因为很久没有做这样的全体养生家人的聚会和分享。大部分的时间在今年的课程线上课程的都是由我们的每一个。去的负责的老大,每一个团队的老大,包括我们的董事和总带自己的去完成。但是从现在往未来去看我们在商学院需要去发挥的整个公司的教育平台的功能。会不定期的给大家更多的线上课程的分享,希望通过我们想让我们养生家人更清楚自己的发展方向。跟认准自己的发展目标,知道自己如何去开展自己当下的工作,因为现在的时间到了年底年底呢,是。每年的销售淡季,所以大家更要有心理准备有思路,有想法。养森商学院会在接下来的时间里不定期的给到所有的小伙们分享,帮助大家成长今天是我们的双十一公司也为了各位的双十一的销售额安排了促销安排的政策。那在这之前呢,我们也做过一轮线上的课程直播。本来我们打算把今天所分享的内容在线上的直播课程就讲清楚,讲明白。但是直播完毕后我们再总结的时候,我发现一件
SQL Server创建视图——视图的作用
视图简介:视图可以看作定义在SQLServer上的虚拟表。视图正如其名字的含义一样,是另一种查看数据的入口。常规视图本身并不存储实际的数据,而仅仅是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图。例如查询,插入,修改,删除操作等,但插入、修改、删除等的操作其实对于原始数据表的操作。视图的作用:1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)3、从而加强了安全性,使用户只能看到视图所显示的数据。4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。1CREATE[ORALTER]VIEW[schema_name.]view_name[(column[,...n])]2[WITH
T-SQL查询进阶--深入浅出视图
**简介**视图可以看作定义在SQLServer上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata.视图简单的理解如下:[![5](http://upload-images.jianshu.io/upload_images/8512409-0d3b48376574f2e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"5")](http://images.cnblogs.com/cnblogs_com/CareySon/201112/201112071433089106.png)通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。为什么要使用视图(View)从而我们不难发现,使用视图将会得到如下好处:视图隐藏了底层的表结构,简化了数据访问操作因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据使用视图
sql server 2012版 学习笔记(转引用)
因为最近参加校招,题库中有一部分sql语句的题目,感觉不是很难吧?但因之前没学过sql这门语言,当时心里是拒绝的,所以决定发疯图强,找些资料,学了之后根据自己的理解写出来,再说以后肯定也是会用到的,所以学了肯定是有百利而无一害,所以,大家共勉~鸡汤一则:“人生不是百米赛跑,而是马拉松~”本文目录一sql简介sql是用于访问和处理数据库的标准的计算机语言什么是sql二安装与配置sqlserver2012版三sqlDMLDDL基础认识数据库表重要事项sqlDML和DDLSQL中最重要的DDL语句四sql基本语句简单介绍一sqlcreatetable语句insertinto子句二sqlselect语句where子句betweenandlike子句in子句distinct关键字groupby语句having子句三update语句四delete语句一、sql简介sql是用于访问
-------- ROOTKIT 核心技术——系统服务调度表挂钩调试(PART III) --------
--------ROOTKIT核心技术——系统服务调度表挂钩调试(PARTIII)--------————————————————————————————————————————————————————————————————————————————————————————本篇开始进行真枪实弹的调试,本文的最后会附上完整的源码包,方便各位在自己的机器上演练。如果安装了WindowsDriverKits,在“开始”->“所有程序”中选择类似“WDK7600.16385.1”的项目。具体的数字取决于你安装的WDK开发环境版本而定。然后选择“BuildEnvironments”下面的操作系统版本,亦即你编译出来的驱动要运行其上的OS版本,接着选择硬件平台体系结构与构建类型,比如“x86CheckedBuildEnvironment”是用于32位平台,且附带生成包含调试符号文件的构建环境。调试符号文件有助于调试器显示驱动二进制文件中的函数,变量,常量名称等信息,生成人性化的输出。这样会
[译]如何保护SQL Server免受Linux上的OOM-killer杀掉
今天机缘巧合搜到一篇微软CSS团队的一篇案例分享,在本人学习SQLOnLinux过程中,对很多知识点存在不理解,看了这篇文章之后,觉得很有必要存起来,不管有没有其他人看,对我自己还是很有用,所以决定翻译一下,我相信在不久的将来这篇文章会被重视,因为SQLOnLinux已经出来了一段时间,并且部分客户已经在用,国内市场的改变也只是时间上的问题。这是一篇关于SQLServer运行在Linux环境下的异常Failover场景的案例,下面是译文,读者如有兴趣可以阅读原文:HowtosafeguardSQLServeronLinuxfromOOM-Killer
64位内核第一讲,和32位内核的区别
64位内核第一讲,和32位内核的区别双击调试配置请查看连接:https://www.cnblogs.com/aliflycoris/p/5877323.html一丶编译的区别.首先,还是使用WDK7.1.7600编写.但是编译的时候,要使用x64来编译.其代码框架不变.1.驱动加载驱动加载的程序还是使用普通的驱动加载即可.但是64位(win7),微软推出了两种新的方式.1.DSE2.KPPDSE:这个机制是驱动强制签名,也就是说你编写的驱动,都要进行签名.才可以加载.KPP:内核补丁保护,比如我们说的SSDT表,(ring3->ring0中专表)在XP下是可以HOOK的,现在,这些都被保护了,只要你更改了系统的核心源码,直接蓝屏.2.去掉KPP保护.在编写的64为内核驱动,如果我们的系统是安全模式启动,则没有DSE保护.也就是说不用签名.现在有工具可以直接去使用.第一个选项是,点击之后,你的系统启动则是在安全模式启动.第二个选项是,点击之后,你的驱动可以添加一个测试签名.