在我的时事通讯数据库中找到'OR 1 = 1/*sql注入

Not*_*mer 20 mysql security sql-injection

我在我的通讯订户数据库的"电子邮件"字段中找到以下内容:'或1 = 1/*

我知道这是一个SQL注入,但就是这样.我已经谷歌搜索了一下,但我仍然清楚它究竟想要实现什么.这发生在11月初,据我所知,我们在那个时候没有停电.你们这些善良的灵魂能告诉我这个家伙可能会尝试做什么吗?有没有办法知道他是否达到了他的目的?

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

Joe*_*Joe 25

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

一个例子是

SELECT userid 
FROM users 
WHERE username = ''OR 1=1/*' 
    AND password = ''
    AND domain = ''
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,如果您要填充用户名字段而不转义,则'无论用户在查询中传递了哪些凭据,都会返回系统中可能授予对攻击者访问权限的所有用户ID(如果管理员是您的第一个用户,则可能是管理员访问权限).您还会注意到查询的其余部分将被注释掉,因为/*包含了真实的'.

您可以在数据库中看到该值的事实意味着它已被转义并且特定攻击未成功.但是,您应该调查是否进行了任何其他尝试.


ber*_*rty 8

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

mysql_query("SELECT * FROM newsletter WHERE email = '$email'");
Run Code Online (Sandbox Code Playgroud)

电子邮件'OR 1 = 1/*将提供此类查询:

mysql_query("SELECT * FROM newsletter WHERE email = '' OR 1=1/*");
Run Code Online (Sandbox Code Playgroud)

因此它选择所有行(因为1 = 1总是为真,而查询的其余部分为'已注释').但它没有成功

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

  • 如果您自己尝试,请不要担心,它不会改变您的数据库. (2认同)

Mic*_*son 5

数据库中的特定值不是您应该关注的.这可能是攻击者模糊您的系统以查看它是否容易受到一系列标准攻击,而不是利用已知漏洞的目标攻击的结果.

您应该专注于确保您的应用程序可以抵御这些类型的攻击; OWASP是一个很好的资源.

如果你使用参数化查询来访问数据库,那么除非你在后端使用动态Sql,否则你对Sql注入是安全的.

如果您不这样做,那么您很容易受到攻击,您应立即解决此问题.

此外,您应该考虑对电子邮件地址执行某种验证.