找到“OR 1 = 1 / * SQL注入我的通讯数据库(Found 'OR 1=1/* s

2019-08-04 02:09发布

我发现我的通讯用户数据库的“电子邮件”字段中输入以下:“OR 1 = 1 / *

我知道这是一个SQL注入,但仅此而已。 我GOOGLE了那么一点点,但我仍然在明确的正是它想要的目的。 这种情况发生十一月初,据我所知,我们已经在那个时候没有中断。 可以任你好心人告诉我,这个家伙可能是试图做? 有没有办法知道他是否达到了他要怎样做?

我知道几乎一无所知,我很担心。 :(

Answer 1:

'OR 1=1是企图使查询成功,不管是什么
/*是为了让查询的其余部分被忽略,开始多行注释的尝试。

一个例子是

SELECT userid 
FROM users 
WHERE username = ''OR 1=1/*' 
    AND password = ''
    AND domain = ''

正如你可以看到,如果你是填充用户名字段没有逃脱'无论用户通过什么凭据查询将返回所有用户ID系统可能授予攻击者访问(可能是管理员权限,如果管理员是您的第一个用户) 。 您还会注意到在查询的其余部分将因为被注释掉/*包括实际'

你可以看到在你的数据库中的值,这意味着它是逃脱和特定的攻击没有成功。 但是,如果任何其他尝试了,你应该调查。



Answer 2:

它可能旨在选择在表中的所有信息。 如果你使用这种查询(例如PHP):

mysql_query("SELECT * FROM newsletter WHERE email = '$email'");

电子邮件'OR 1 = 1 / *会给这种查询:

mysql_query("SELECT * FROM newsletter WHERE email = '' OR 1=1/*");

因此,选择所有行(由于1 = 1总是真,查询的其余部分被“注释”)。 但事实并非如此成功

  • 如果在查询中使用的字符串转义
  • 如果你不显示所有查询结果的页面上...


Answer 3:

在你的数据库中的特定值是不是你应该专注于什么。 这可能是攻击者模糊化系统,看它是否是易受的结果集的标准攻击 ,而不是有针对性的攻击利用已知的漏洞。

你应该集中精力确保您的应用程序是针对这些类型的攻击安全; OWASP是一个很好的资源 。

如果您使用参数化查询来访问数据库 ,那么你对SQL注入安全的,除非你在后端使用动态SQL也是如此。

如果你不这样做的时候,你是脆弱的,你应该立即解决这个问题。

此外,你应该考虑进行某种形式的电子邮件地址的验证。



Answer 4:

它的更好,如果你使用验证码的用户输入使得它限制使用的代码符号和部分在你的输入形式。 如果您在HTML代码的PHP embeed你的PHP代码有可能成为顶部,以确保它不会被忽略的评论,如果黑客修改了页面,并添加HTML代码/ *



文章来源: Found 'OR 1=1/* sql injection in my newsletter database