知彼知己,方可取胜。首先要清楚SQL注入攻击有哪些种类。
1.没有正确过滤转义字符
在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:
statement := "SELECT * FROM users WHERE name = '" + userName + "';"
这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:
a' or 't'='t,此时原始语句发生了变化:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种 *** 被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。
a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '%
这就将最终的SQL语句变成下面这个样子:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT *
FROM DATA WHERE name LIKE '%';
其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。
2.Incorrect type handling
如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:
statement := "SELECT * FROM data WHERE id = " + a_variable + ";"
从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1;DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id = 1;DROP TABLE users;
3.数据库服务器中的漏洞
有时,数据库服务器软件中也存在着漏洞,如MYSQL服务器中mysql_real_escape_string()函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。
对于年轻人来说,就业是难题,创业也是难题,就业需要面临严峻的职场压力,创业要承担未知的风险。但相对于就业,依旧有越来越多的年轻人选择创业,因为比起固定的工资收入,这些人对创业成功会带来丰厚的盈利,充满...
找真正黑客弄回输了的赌资相关问题 世界上最大的黑客组织是什么相关问题 QQ号被黑客盗了怎么快速找回 诚信黑客(黑客linux系统)...
推广转换率:有几个从广告宣传连接,进到大家的产品网页页面? 选购转换率:有几个在产品网页页面提交订单买东西? 绝不浮夸的说,转换率便是互连网业务流程的关键。沒有转换率...
本文导读目录: 1、求 黑客帝国 百度网盘免费资源链接,谢谢 2、求 黑客帝国 百度云资源,谢谢 3、黑客资源百度云 免费 4、黑客工具下载 5、求Resource Hacker(编程...
打电话问问比尔盖茨,或者去下面找找那个卖苹果的乔布斯 hack论坛,不过后果自己负责去,都是收费服务的 找不到真正有实力的可能,也不大可能帮你的,能帮到你的只能是骗子了 我自己都不敢说自己是高手,电脑...
一、从哪怎么找黑客 1、找黑客因此,花费大量精力为网民整理FAQ教程的黑客和黑客网站的站长在互联网上是值得尊敬的。从哪小丑几乎所有最好的黑客都是自学的.黑客网连接到单一控制是不容易的?L线灯L1或L2...