SQL Server应用程序的高级Sql注入(10)
作者:Chris Anley luoluo 来源: * 八进制 发布时间:2009-04-11 16:54:00
[长度限制]
有时候输入对数据的长度加以限制会使攻击困难许多,这的确阻止了一些攻击,但一个很短的SQL语句也可能造成非常大的危害:
Username: ';shutdown--
关闭SQL-Server,只用了12个字符。另一个例子:
drop table
如果长度限制是在字符串过滤后,另一个问题可能会发生。假设用户名被限制在16个字符之内,密码也被限制在16个字符之内,下面的用户名和密码结合可以执行'shutdown'命令:
Username:aaaaaaaaaaaaaaa'
Password:'; shutdown--
原因是程序过滤用户名最后的单引号,但是字符串又被切回到16个字符,删除了过滤的单引号。结果是密码域可以包含一些SQL, 只要它以一个单引号开始,最后的查询会变成这样:
select * from users where username = 'aaaaaaaaaaaaaa'' and password=''';shutdown--
用户名在查询里就变成:
aaaaaaaaaaaaaaa' and password='
后面附上的SQL被执行。
[躲避审核]
SQL Server在sp_traceXXX系列的函数包含丰富审核接口,它可以记录任何数据库里的事件。这里我们特别感兴趣的是T-SQL事件,它记录了所有的SQL语句以及服务器上准备好的和已运行了的批处理。如果这个级别的审核开启的话,所有我们讨论的注入都将被记录下来有经验的数据库管理员将会看到所有发生的事情。但是如果攻击者附加下面的字符:
sp_password
到一个Transact-SQL语句,这个审核记录如下:
-- 'sp_password' was found in the text of this event.
-- The text has been replaced with this comment for security reasons.
这在所有的的T-SQL日志记录时都会发生,即使'sp_password'出现在注释中。这当然是在用户传递sp_password时有意隐藏用户的明文密码,但这对攻击者相当有用。
所以,为了隐藏所有的注入攻击者只需要在注释符'--'后面加一个字符串:
Username: admin'--sp_password
事实上一些执行了的SQL将被记录,但是查询字符串本身被强制不记录。


猜你喜欢
- 从视频中提取音频安装 moviepypip install moviepy相关代码:audio_file = work_path +
- 每次讲解SQL Server里的锁和阻塞(Locking & Blocking)都会碰到的问题:在SQL Server里,为什么我们
- 三种方法利用indexOf判断新数组underscore.js中实际上也是使用的类似的indexOf //传入数组 function uni
- matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_
- 如下所示:找了好久,今天无意中敲出来了:ctrl+l(小写)全局查找某个变量:ctrl+h我用的Eclipse快捷键来源:https://b
- 本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项。本篇阅读的代码片段来自于30-seco
- 一、什么是Django ContentTypes?Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目
- 在处理数据和进行机器学习的时候,遇到了大量需要处理的时间序列。比如说:数据库读取的str和time的转化,还有time的差值计算。总结一下p
- 当浏览者进入你的网站首页时或提交某些表单时,会弹出网站声明或提交说明等文本信息框,引导浏览者使用你的网站。实现这个功能我们是用Dreamwe
- 一、按索引取数据①tf.gather()输入参数:数据、维度、索引例:设数据是[4,35,8],4个班级,每个班级35个学生,每个学生8门课
- 引言这不是一个什么多深的技术问题,多么牛叉的编程能力。这跟一个人的开发能力也没有非常必然的直接关系,但是知道这些会对你的SQL编写,排忧及优
- 1.sorted函数按key值对字典排序先来基本介绍一下sorted函数,sorted(iterable,key,reverse),sort
- 数据采集我们上一篇介绍了,如何采集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。我们今天来学习如何采集电影评论,看看这个电影好不好看。发送请求我
- 问题现象元素的属性中没有id、name;虽然有class,但比较大众化,且位置也不固定;例如:页码中的下一页;那该如何找到该元素?<a
- 一、类和对象通俗理解:类就是模板,对象就是通过模板创造出来的物体类(Class)由3个部分构成:类的名称: 类名类的属性: 一组数据类的方法
- 现如今各种APP、微信订阅号、微博、购物网站等网站都允许用户发表一些个人看法、意见、态度、评价、立场等信息。针对这些数据,我们可以利用情感分
- 前言本文主要给大家介绍了关于WebSocket部署服务器外网无法连接的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍
- 代码如下:USE [tempdb] GO /****** Object: UserDefinedFunction [dbo].[fun_ge
- Python2的字符串有两种:str和Unicode,Python3的字符串也有两种:str和Bytes。Python2的str相当于Pyt
- 1. EXISTS的执行流程 select * from t1 where exists ( select null from t2 whe