' or '1'='1 是用来干什么的?

来源:百度知道 编辑:UC知道 时间:2024/05/08 03:25:22
万能密码吗?我写了一个SQL语句是("select * from login where username='"+name+"' and password='"+pw+"'");
在密码框内它输入' or '1'='1 居然成功进去了。。。。
真是不能理解,书上也没有这知识。。。【' or '1'='1 】是干什么的,嵌入到SQL后应该是什么样子的?

这个是sql注入式攻击
注入式攻击的类型

可能存在许多不同类型的攻击动机,但是乍看上去,似乎存在更多的类型。这是非常真实的-如果恶意用户发现了一个能够执行多个查询的办法的话.

如果你的脚本正在执行一个SELECT指令,那么,攻击者可以强迫显示一个表格中的每一行记录-通过把一个例如"1=1"这样的条件注入到WHERE子句中,如下所示

SELECT * FROM wines WHERE variety = 'lagrein' OR 1=1;'

这本身可能是很有用的信息,因为它揭示了该表格的一般结构(这是一条普通的记录所不能实现的),以及潜在地显示包含机密信息的记录。

一条更新指令潜在地具有更直接的威胁。通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子

UPDATE wines SET type='red','vintage'='9999' WHERE variety = 'lagrein'

通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子

UPDATE wines SET type='red','vintage'='9999 WHERE variety = 'lagrein' OR 1=1;'

最危险的指令可能是DELETE-这是不难想像的。其注入技术与我们已经看到的相同-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子

DELETE FROM wines WHERE variety = 'lagrein' OR 1=1;'

现在知道了没?因为你写的程序不严谨啊。。