SQL注射漏洞简述.doc_第1页
SQL注射漏洞简述.doc_第2页
SQL注射漏洞简述.doc_第3页
SQL注射漏洞简述.doc_第4页
SQL注射漏洞简述.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

indoc.inSQL注射漏洞简述 通过暴库,下载数据库,阿剑剑对数据库也有了些感性的认识。可是,并不是所有时候我们都可以得到别人的数据库并打开来看的。听说有门技术叫SQL注射,不用下载数据库,也可以得到数据库中的信息。于是阿剑剑嚷嚷着要学它。欠钱:“SQL注射是一门比较有难度的技术,因为要了解它和熟练它需要有ASP和数据库的基础。你认为自己有资格学习它吗?”阿剑剑想了一下:“这些基础我是一点都没有啊,可是不是听说市面上有很多SQL注射的傻瓜工具吗?你教会我使用这些工具不就可以了?”欠钱:“既然如此,那好吧,我首先把SQL最基本的语法告诉你,这样你才好理解那些SQL注射工具上的术语和使用步骤。”阿剑剑:“欠钱你真是太好了,感动ing!不过,不会很难吧?”“当然不难了!”欠钱拍着胸脯。一个数据库一般都包含有若干张表,如同我们前面暴出的数据库中admin表包含有管理员信息,而user表则包含有所有的论坛用户信息一样。以下面这张表为例:Dv_UserUserID UserName UserPassword UserEmail UserPost1 admin 469e80d32c0559f8 02 Test 965eb72c92a549dd 12.com 0这是DVBBS 7.0的数据库中所有用户资料的表,Dv_User 是表名。每一行代表一个用户,每一列是该用户的某种属性。我们最感兴趣的自然是用户名与密码这样的属性了。SQL是一种用于操作数据库的规范化语言,不同的数据库(MSSQL、MYSQL、ORACLE)大体上都是一样的。比如我们要查询数据库中的信息:select UserName,UserPassword from Dv_User where UserID=1;这就是一个最典型的SQL查询语句,它的意思是,在Dv_User这张表中,将UserID为1的用户名与密码查询出来。得到的结果是:admin 469e80d32c0559f8SELECT语句语法:SELECT 列名,列名2 FROM 表名 WHERE 限制条件例:SELECT * FROM Dv_User where UserID=1表示查询UserID为1的所有信息。更新:UPDATE 表名 SET 列名=新值 WHERE 限制条件例:UPDATE Dv_User set UserPassword= 965eb72c92a549dd WHERE UserName=admin此语句将把Dv_User表中的UserName为admin的那一行中UserPassword的值改为965eb72c92a549dd。删除:DELETE FROM 表名 WHERE 限制条件例:DELETE FROM Dv_User WHERE UserName=test将用户名为test的那一行从Dv_User表中删除二、SQL注射漏洞简述阿剑剑仔细把上面四个SQL语句读了几遍,发现非常的容易,于是虚心请教欠钱:“SQL语法看起来很容易上手嘛,那SQL漏洞是怎么来的呢?”欠钱打开一个页面,指着里面的代码:if id thensql=SELECT * FROM 日记 WHERE id=&idrs.Open sql,Conn,1阿剑剑看了一眼:“哎呀,头晕了!”欠钱敲了他一下:“关于漏洞的成因我只讲这一次,如果怕难就不知道漏洞的由来了,而且实际上一点也不难的,看好了,我们这段代码是提取自BBSXP论坛的,经过我改动以后,把它做成了一个有漏洞的页面给你讲述SQL漏洞的原理。”那张日记的表内容如下:日记id username title content adddate1 职业欠钱 今天安装了BBSXP 这是5.16版,发现BBSXP体积虽小,可是功能一点也不少.完全够用,不知道安全性怎么样 2005-10-252 职业欠钱 再写一个日志吧 多写几个日志看看,玩玩,呵呵,反正这个论坛也只有我一个人在. 555555555好寂寞 2005-10-25我们访问http:/localhost/bbsxp/blog.asp?id=1的时候结果如图1。阿剑剑:“我明白了,访问blog.asp的时候,我们提交的参数id为1,那么放到SQL语句里就变成了:SELECT * FROM 日记 WHERE id=1所以就得到我们看到的那个页面,对吗?”欠钱:“很好!正是如此!SQL漏洞的起源就从这里开始了!注意到了吗?id的值是由我们提交的,但是它却没有做任何的检查,也就是我们提交的id可以是任意字符串。假设我们提交一个单引号的话,SQL语句就会因为id=1 而出错”“等等,为什么加单引号会出错呢?”“因为单引号在SQL语句里有特殊的含义,它只能以abc这样的方式出现,表示abc为一个字符串,如果只出现一个单引号,整个句子肯定会出错了。”“哦,那单引号和SQL注射有什么关系呢?”“关系很密切,一般来说,常见的SQL语句有这么几种:SELECT * FROM 表 WHERE id=12 这是数字型,12由我们提交SELECT * FROM 表 WHERE name=admin 这是字符型,admin由我们提交SELECT * FROM 表 WHERE key like %word% 这是搜索型,word由我们提交我们以第一种情况为例,假设我们提交 id=12 and 1=1,那么完整的SQL语句为:SELECT * FROM 表 WHERE id=12 and 1=1它并不出错,但是如果我们提交改为1=2,也就是SELECT * FROM 表 WHERE id=12 and 1=2 此时注意到WHERE后面的条件,它要求存在一条记录,必须满足id=12,同时还要求1=2,由于1=2永远不成立,于是这个SQL语句尽管语法上没错误,可是搜索的结果却一定为空。于是将提示我们找不到记录。如图2。”阿剑剑:“我明白了,访问blog.asp的时候,我们提交的参数id为1,那么放到SQL语句里就变成了:SELECT * FROM 日记 WHERE id=1所以就得到我们看到的那个页面,对吗?”欠钱:“很好!正是如此!SQL漏洞的起源就从这里开始了!注意到了吗?id的值是由我们提交的,但是它却没有做任何的检查,也就是我们提交的id可以是任意字符串。假设我们提交一个单引号的话,SQL语句就会因为id=1 而出错” “等等,为什么加单引号会出错呢?”“因为单引号在SQL语句里有特殊的含义,它只能以abc这样的方式出现,表示abc为一个字符串,如果只出现一个单引号,整个句子肯定会出错了。”“哦,那单引号和SQL注射有什么关系呢?”“关系很密切,一般来说,常见的SQL语句有这么几种:SELECT * FROM 表 WHERE id=12 这是数字型,12由我们提交SELECT * FROM 表 WHERE name=admin 这是字符型,admin由我们提交SELECT * FROM 表 WHERE key like %word% 这是搜索型,word由我们提交我们以第一种情况为例,假设我们提交 id=12 and 1=1,那么完整的SQL语句为:SELECT * FROM 表 WHERE id=12 and 1=1它并不出错,但是如果我们提交改为1=2,也就是SELECT * FROM 表 WHERE id=12 and 1=2此时注意到WHERE后面的条件,它要求存在一条记录,必须满足id=12,同时还要求1=2,由于1=2永远不成立,于是这个SQL语句尽管语法上没错误,可是搜索的结果却一定为空。于是将提示我们找不到记录。如图2。”阿剑剑想了一下:“这么说,为了不让SQL语句出错,那么我们在字符型SQL语句中,要提交的变量就应该是admin and 1=1然后补到完整的SQL语句中,就是SELECT * FROM 表 WHERE name=admin and 1=1而字符型则是word% and %=补充到完整的SQL语句为:SELECT * FROM 表 WHERE key like %word% and %=%”欠钱:“完全正确!这正是我们判断注射类型的方法!”阿剑剑:“那我们怎么才能够得到数据库中的信息呢?”欠钱:“最直接的方法自然是猜了,我们在提交的数据里加入一些其他的判断语句来代替and 1=1这样的条件。以数字型SQL查询语句为例,我们提交一个id的值如下:id=1 and exists (select * from admin)还原到完整的SQL语句中:SELECT * FROM 表 WHERE id=1 and exists (select * from admin)如果存在admin这张表的话,那么这个SQL语句将按原样返回,否则将返回空值。到blog.asp中去实验一下就知道了。如图3。”阿剑剑:“提示不存在这张表,然后我就要再学习很多的SQL语句去猜测接下来的数据吗?”欠钱:“呵呵,确实更改这个SQL语句我们就可以慢慢猜出数据库里的内容。首先猜一个数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论