【问题标题】:Can i get an example of how an sql injection can occur? [closed]我可以举一个 sql 注入如何发生的例子吗? [关闭]
【发布时间】:2011-10-27 04:23:12
【问题描述】:

我是 PHP 新手,即将推出。我正在使用 mysql_real_escape_string();对于所有用户输入和所有 $_GET 和 $_REQUEST 变量。我想测试它,但不确定它是如何完成的,所以我可以防止它并采取适当的措施。

【问题讨论】:

标签: php sql security code-injection


【解决方案1】:

尝试在所有表单字段(包括隐藏字段)中输入类似于以下字符串的字符串:

blah'"blah

如果你没有正确地转义它,你会得到一个 sql 错误。如果您收到该 sql 错误,那么您应该能够弄清楚如何编写一个查询,该查询执行的操作与原始查询不同。

【讨论】:

  • 好的,我没有收到 sql 错误,但我使用了一个显示数据的表单,它向我显示 blah'"blah
【解决方案2】:

我正在使用 mysql_real_escape_string();对于所有用户输入和所有 $_GET 和 $_REQUEST 变量

好吧,你完全错了。

首先,mysql_real_escape_string() 与“用户输入”无关。这是与数据库相关的功能,与用户无关。
接下来,它与“所有输入”无关,因为它的使用仅限于字符串。所以,如果你有这样的代码

$id = mysql_real_escape_string($_GET['id']);
$sql = "SELECT * FROM table WHERE id=$id";

你在这里逃脱绝对没用,什么也没有保护。

至于测试 - 这有点棘手。不过,网上有一些工具,我相信你可以google一些。

【讨论】:

  • 你应该为此发布一个 PoC:http://localhost/vuln.php?id=sleep(30)
猜你喜欢
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2016-06-07
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多