概述及在网络安全中的应用上呢
当一个用户提交了一个用户名和密码后,查询(query)将搜索Users表单来看是否其中有一行中所包含的用户名和密码与用户提供的相同,如果找到了那么一行,则用户名被储存到变量strAuthCheck中,同时说明该用户应该被鉴定,如果没有找到那么一行,则strAuthCheck变量保持为空,同时该用户不被鉴定。 如果strUsername和strPassword变量可以包含任何你要的字符,你可以修改当前的SQL查询结构,那样即使你不知道有效的用户名和密码,你仍何以得到一个有效的name,它是如何实现的呢?让我们假设用户像下面那样填充了一个登陆表单: Login: \' OR \'\'=\' Password: \' OR \'\'=\'
值得鼓励。一边是大理旅游游客不断增长的需求 这将给SQLQuery以下值: SELECT Username FROM Users WHERE Username = \'\' OR \'\'=\'\' AND Password = \'\' OR \'\'=\'\' 请求并不把用户提交的数据与现存的Users表单做比较,而是直接比较\'\'和\'\',显然它总是返回true,(注意nothing和null是有区别的)由于WHERE语句中的所有验证条件都符合了,用户名将使用表单中搜索到的第一行中的那个,接着用户名将被传递给变量strAuthCheck,这样我们的效力就得以保证。使用single result cycling技术,也有可能使用另外一行的数据,这将在以后讨论。 3.2 SELECT 对于另一些情况而言,你必须根据查询那些有缺陷的web程序返回的结果,来判断和调整你提交的SQL查询字符串,以便搞定服务器. 3.2.1 直接利用单引号 你将面临的第一个错误是语句结构错误.一个结构错误表明SQL查询的语句结构存在缺陷.首先你应该明白,在没有编码引号的情况下, 插入脚本攻击是否可以成功. 直接SQL注射的时候,无论你提交什么语句都会被不加任何改变地应用于SQL查询中.试着提交参数的时候,先输入合法的值,然后在其后添加一个空格和一个OR,如果服务器产生了错误,那么直接SQL注射是可能的.提交的值可以是任何WHERE子句中用到的值,例如: SQLString = \"SELECT FirstName, LastName, Title FROM Employees WHERE Employee = \" intEmployeeID
或者是紧跟于一个SQL关键字,例如表名或者表里的栏目名,比如 SQLString = \"SELECT FirstName, LastName, Title FROM Employees ORDER BY \" strColumn
天津白癜风专科医院北京白癜风
石家庄盆腔炎治疗费用
- 上一篇:概述及在网络安全中的应用上牛
- 下一篇:概述及在网络安全中的应用上的