我的网站正受到 SQL 注入(inject)攻击,我正在尝试查找注入(inject)源。
发送的查询是这样的:
SELECT *
FROM settings
WHERE user = 'x'
XOR SLEEP( 15 )
LIMIT 1 #'
我是注入(inject)新手,但我认为他们正在标记我的一个查询的结尾?
我该怎么做才能找出它的来源,我想这可能是我的登录页面,但我的登录页面在任何查询中都不会访问设置表。
如果您提供任何帮助,我们将不胜感激。
最佳答案
您的 SELECT 有问题;第二个 '
之后的所有内容都不好。
您可能有类似以下 PHP 示例的内容:
$user = $_POST['user'];
$query = "SELECT * FROM settings WHERE user = '$user'";
(这个概念在其他语言中是相同的,但你没有说你正在使用哪种语言。)
利用这一点很容易;只需在 user
表单字段中传递带有 '
的内容即可。在您的示例中,攻击者使用 timing attack查看用户名 x
是否存在。然后,他们使用 #
将行的其余部分转换为注释,避免最终 '
出现语法错误。
为了防止这种情况,请使用准备好的语句。您将需要阅读OWASP SQL Injection Prevention Cheat Sheet ,也是。
关于php - 尝试定位sql注入(inject)源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35049427/