php - 尝试定位sql注入(inject)源

标签 php mysql sql code-injection

我的网站正受到 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/

相关文章:

php - 在 WordPress 中转义 Twig/Timber 的要求

javascript - 无法从外部 PHP 文件中的 AJAX 调用读取 POST 数组

php - 一组连接到多个数据库之一的 PHP 文件

mysql - 选择截至日期的行数

c# - 每当数据库中的数据更新时通知客户

php - 写入 mysql $_POST ["value"] + 某些文本不起作用

PHP 将 MySQL 导出为 CSV - 结果显示为 HTML

mysql - 数据变更历史与审计表 : Grouping changes

Mysql:将产品限制运输选项添加到购物车

sql - 是否可以在同一查询中同时使用过滤器和 View 函数?