正在尝试定位 sql 注入源
Trying to locate sql injection source
我的站点受到了 sql 注入攻击,我正在尝试定位注入源..
正在发送的查询是这样的:
SELECT *
FROM settings
WHERE user = 'x'
XOR SLEEP( 15 )
LIMIT 1 #'
我是注入新手,但我认为他们正在标记我的一个查询的结尾?
我该怎么做才能找出它的来源,我想可能是我的登录页面,但我的登录页面在任何查询中都无法访问设置 table。
如有任何帮助,我们将不胜感激。
你的 SELECT 出了点问题;第二个 '
之后的一切都不好。
你可能有这样的东西PHP例子:
$user = $_POST['user'];
$query = "SELECT * FROM settings WHERE user = '$user'";
(这个概念在其他语言中是相同的,但你没有说你使用的是哪种语言。)
利用这个很容易;只需在 user
表单字段中传递带有 '
的内容。在您的示例中,攻击者使用 timing attack 查看用户名 x
是否存在。然后他们使用 #
将行的其余部分变成注释,避免最后的 '
.
出现语法错误
为防止这种情况,请使用准备好的语句。您也会想阅读 OWASP SQL Injection Prevention Cheat Sheet。
如果登录页面未使用设置 table,则无关紧要,例如:
有人没有输入电子邮件,而是在输入中输入了这个 -
x'; SELECT * FROM settings WHERE user = 'x' XOR SLEEP( 15 ) LIMIT 1
那么您的登录查询将如下所示
SELECT * FROM members WHERE password = 'x' and email ='x'; SELECT * FROM settings WHERE user = 'x' XOR SLEEP( 15 ) LIMIT 1 #';
两个查询都被执行。
几年前我被 sql 注射击中了....吸取了教训。
我现在一直在使用 pdo 和准备好的语句。
我的站点受到了 sql 注入攻击,我正在尝试定位注入源..
正在发送的查询是这样的:
SELECT *
FROM settings
WHERE user = 'x'
XOR SLEEP( 15 )
LIMIT 1 #'
我是注入新手,但我认为他们正在标记我的一个查询的结尾?
我该怎么做才能找出它的来源,我想可能是我的登录页面,但我的登录页面在任何查询中都无法访问设置 table。
如有任何帮助,我们将不胜感激。
你的 SELECT 出了点问题;第二个 '
之后的一切都不好。
你可能有这样的东西PHP例子:
$user = $_POST['user'];
$query = "SELECT * FROM settings WHERE user = '$user'";
(这个概念在其他语言中是相同的,但你没有说你使用的是哪种语言。)
利用这个很容易;只需在 user
表单字段中传递带有 '
的内容。在您的示例中,攻击者使用 timing attack 查看用户名 x
是否存在。然后他们使用 #
将行的其余部分变成注释,避免最后的 '
.
为防止这种情况,请使用准备好的语句。您也会想阅读 OWASP SQL Injection Prevention Cheat Sheet。
如果登录页面未使用设置 table,则无关紧要,例如:
有人没有输入电子邮件,而是在输入中输入了这个 -
x'; SELECT * FROM settings WHERE user = 'x' XOR SLEEP( 15 ) LIMIT 1
那么您的登录查询将如下所示
SELECT * FROM members WHERE password = 'x' and email ='x'; SELECT * FROM settings WHERE user = 'x' XOR SLEEP( 15 ) LIMIT 1 #';
两个查询都被执行。
几年前我被 sql 注射击中了....吸取了教训。 我现在一直在使用 pdo 和准备好的语句。