SQL注入简单原理分析
SQL注入简单分析
示例语句:
select * from admintable where adminName like '%a%'
在查询中我们一般在a这个地方由界面传入不同的值,当我们在a这里传入的值为“'”单引号时,拼凑成的SQL语句就如下:
select * from admintable where adminName like '%'%'
执行这句语句我们会发现出现以下异常:
消息 105,级别 15,状态 1,第 1 行
字符串 '
' 后的引号不完整。
消息 102,级别 15,状态 1,第 1 行
'
' 附近有语法错误。
因为单引号的加入是原本完整的SQL语句拼凑不再完整,因此导致以上异常。
而一般黑客在简单的尝试注入时,在界面的输入处(如URL的参数,文本框的输入等)直接输入单引号来测试是否会引发SQL异常,根据页面的错误代码展现来判断是否存在SQL注入漏洞,例如会直接在页面中出现SQL的异常代码或直接跳转到错误页面。当被认为存在SQL注入漏洞时,那么将不再是输入单引号了,而是输入相关的SQL执行语句。
于是当我们传入不同的值例如
' or 1=1 ;delete admintable where 1=1 or ''='
得到的SQL语句就如下:
select * from admintable where adminName like '%' or 1=1 ;delete admintable where 1=1 or ''='%'
而这句SQL的执行效果就有两个:
1、select * from admintable where adminName like '%' or 1=1 ;
--查询admintable
2、delete admintable where 1=1 or ''='%'
--将admintable清空
也就是说如果把delete admintable where 1=1 这句SQL扩展修改的话,可以执行增删改等操作了,例如SQL2000中的XP_CMDShell命令还能直接执行CMD命令台的CMD命令,来实现直接对服务器的控制等。
至于如何暴露出数据库的各个表的名字等,可以通过枚举猜测等方式实现,网络上已经有相关的SQL注入工具可供直接使用。
当我们的网站存在SQL注入漏洞时,最好修改相关的底层代码或者使用相关的监控工具来修复。一个网站被入侵并不是黑客的错,而是服务器管理员和网站开发人员惹下的祸。
如有错误,敬请指正。
相关文档:
如要在一个hwsp表中填加字段:ylxs
alter table hwsp add column ylxs
ALTER TABLE 表 {ADD ADD{COLUMN 字段类型 [ (字长)] [NOT NULL] [CONSTRAINT 索引 ] |
ALTER COLUMN 字段类型 [(字长)] |
CONSTRAINT 多重字段索引 } |
&nbs ......
/*=================== 导入/导出 Excel 的基本方法 ===================*/
从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
--如果接受数据导入的表已经存在
insert into 表 select * from
......
写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了。
通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下:
SET STATISTICS PROFILE ON:显示分析 ......
在Excel中,我们时常会碰到这样的字段(最常见的就是电话号码),即有纯数字的(如没有带区号的电话号码),又有数字和其它字符混合 (如“区号-电
话号码”)的数据,在导入SQLServer过程中,会发现要么纯数字的数据导过去之后变成了NULL,要么就是数字和其它字符混合的数据导过去之后变成
了NULL。
&n ......
SQL 中的 TRIM 函数
是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:
MySQL: TRIM(), RTRIM(), LTRIM()
Oracle: RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()
各种 trim 函数的语法如下:
TRIM ([[位置] [要移除的字串] from ] 字串): [位置 ......