爱飞 发表于 2015-1-16 22:15:37

MSSQL网站制作之关于SQL注进的几类毛病和发生的道理

CSV逻辑上由逗号分割数据的存储引擎</p>关于注进而言,毛病提醒是极为主要。所谓毛病提醒是指和准确页面分歧的了局反应,妙手是很器重这个一点的,这关于注进点的精准判别相当主要。本问会商下关于几类毛病和他发生的道理,但愿对读者有所匡助。
毛病提醒次要有逻辑毛病和语法毛病和剧本运转毛病三类。
一:逻辑毛病
复杂的例子是1=11=2这两个,1=1与1=2页面分歧的道理是甚么?以$sql=“select*fromnewswhereid=$_GET[id]”为例。
select*fromnewswhereid=1and1=2发生的了局集为NULL,然后程序取值得时分,就会往出空值,没法显现。固然有的程序发明SQL实行了局集为空,就当即跳转,效果就不显鸟。值得注重的是,有的如OraclePostgresql的数据库在了局集为空情形下会再页面上体现字符型null字样,这算是个特性。假如利用or前提,好比
select*fromnewswhereid=1or1=1
和and1=2得了局恰好相反,他的了局集非常复杂。假如SQL语句云云,再加上程序是轮回读取了局集(一些编程上的成规)那末会掏出一切了局,了局大概运转很慢,在数据量伟大的oracle上简单呈现。这个例子会呈现甚么呢,一样平常程序掏出了局会合的第一条了局,那末极可能已不是id=1的那条旧事了,这就是由些小菜奇异偶然候or1=1页面会产生变更的缘故原由。
回根究竟,都是了局集分歧酿成的,天真把握是关头,这并不是纯真的履历成绩。
二:语法毛病
语法毛病时对照熟习的,好比关于SQLServer,PgSQL,Sybase的注进毛病提醒都很主要,由于使用它的特征来猎取信息很疾速。语法毛病酿成的了局多是SQL毛病而中止剧本实行,可是剧本或服务器设置屏障毛病的情形下,程序失掉持续实行,可是了局集不存在,连NULL都算不上,反应给打击者的极可能就是了局集为空的情形,实在这是剧本的处置了局。固然OraclePgSQL体现null。
三:运转毛病不必说了,典范的就是使用mysql注进benchmark让剧本运转超时失掉物理路径,和使用超时来取得分歧的表征举行盲注进。
四:逻辑毛病和语法毛病的分离。
当表征极不分明的时分,使用相似iff如许的函数举行准确与否的辨别偶然候会成拯救稻草。由于语法毛病和逻辑毛病的表征年夜多半情形城市有分歧。
iff(1=1,1,‘no’)这个会发生了局1注重是数字,而iff(1=2,1,‘no’)这个会发生‘no’是字符。那末
id=1and1=iff(1=1,1‘no’)准确是一定建立的,而id=1and1=iff(1=2,1,‘no’)会由于范例分歧产生语法毛病。不外惋惜的是仿佛撑持iff函数的数据库未几,呵呵。
如今讲了局集在注进中的使用道理。
一:从‘or’‘=’入手下手
这是进修SQL注进的低级课程,上岸毛病。我大略从SQL了局集上剖析。
$sql=“selecttop1*fromadminwhereusername=‘$username’andpassword=md5(‘$password’)”;
不言而喻,‘or’‘=’的到场使SQL语句前往了一笔记录,这才使考证经由过程。
二:再看如今的考证中的SQL
$sql=“selecttop1*fromadminwhereusername=‘$username’”;
了局集不为空才依据抽取的纪录会合的暗码值与用户提交的暗码MD5值举行比对来举行考证。如许,你俄然发明‘or’‘=’的计谋失利鸟,可是背景明显有注进,这就是考证办法酿成的。跟进这个考证历程,‘or’‘=’切实其实发生了一个了局集(admin表中的第一行纪录)可是遗憾的事,厥后的暗码比对没法经由过程,考证没法乐成。
思绪很复杂,网上有案例,我重在道理,使用union来发生想要的了局集。好比‘and(1=2)unionselecttop1username,’123456得md5值‘,idfromadminwhereusername=’admin
如许发生了admin的纪录信息,可是纪录会合的暗码谁人地位的值被交换成了123456的md5值,如许,利用admin123456经由过程考证而且承继他的权力。
更有甚者全体用‘xxx’的办法来盲狙,这就很“太过”鸟。不外在sql2000sybase这些严厉请求范例婚配的数据库来讲,如许不克不及撼动“办理员上岸”的,由于实行时产生了语法毛病,了局集为NULL。别的之前ewebeditor注进毛病来上传马也是这个union操纵了局集来到达目标的典范案例。
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。

谁可相欹 发表于 2015-1-19 06:18:17

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

金色的骷髅 发表于 2015-1-26 12:22:14

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

admin 发表于 2015-2-4 15:17:57

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

老尸 发表于 2015-2-10 02:52:07

我们学到了什么?思考问题的时候从表的角度来思考问

飘飘悠悠 发表于 2015-2-28 16:42:34

呵呵,这就是偶想说的

仓酷云 发表于 2015-3-10 03:45:45

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

若相依 发表于 2015-3-17 04:12:14

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

莫相离 发表于 2015-3-23 19:48:13

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
页: [1]
查看完整版本: MSSQL网站制作之关于SQL注进的几类毛病和发生的道理