sql注入与查询中的换行[重复]。

问题描述 投票:2回答:1

所以,我知道SQL注入攻击的基本原理,条目没有经过消毒。所以,我知道SQL注入攻击的基本原理,其条目没有经过消毒。

SELECT id FROM users WHERE username='$username' AND password='$password'

(注意,$password是哈希的)将用 $username=x'1=1; --

一个朋友说,如果你在你的源代码中扔了一个字符,那么你就不能把查询的其他部分注释出来。所以如果你有

Select id
from users
where username='$username'
and password='$password' 

中,然后提交到查询中,那么即使他们试图注释掉用户名,也会出错,因为 and password='$password' 仍会尝试着被执行。

我试了一下,他似乎是正确的。所以,我的问题是,虽然你仍然应该对你的数据库输入进行消毒,但这是否能防止这样的攻击,还是有办法绕过它?

我不知道这是否重要,但我在这里专门讨论mysql。

mysql newline sql-injection
1个回答
2
投票

我玩弄了一下这个方法,但我看不出这种使用换行的方法有任何帮助。也许不同版本的mysql客户端之间有一些差异,但是在MySQL-ND下运行PHP,添加换行符似乎对发送用户名没有帮助。x' OR 1=1 OR ',这并不依赖于 -- 注释,这实际上违背了换行的整个目的。

也许还有更简单的其他方法,但至少看起来很容易被击败。我永远不会相信这样的 "聪明的解决方案"。

© www.soinside.com 2019 - 2024. All rights reserved.