MySQL注入攻击:概念证明

时间:2012-06-27 20:22:44

标签: mysql sql-injection

我在客户端提供的块中有以下代码:

$user = $_POST['user'];

$sql = "SELECT * FROM users WHERE user = '" . $user . "'";

$dbh->query($sql);

此外,此代码不会回显当前屏幕上的任何内容,因此如果我选择多个用户,它对我没有帮助。这并没有直观地向客户展示任何东西。

我很明显这很容易注射,但我找不到向客户展示如何工作的方法。我尝试删除表,但->query()似乎一次只允许一个语句。

这是我到目前为止所尝试的内容 ' OR 1=1; DROP TABLE users; SELECT * FROM users WHERE 1='1但这不起作用。

4 个答案:

答案 0 :(得分:2)

您可以多次注入SLEEP(1000)以排空连接池。或者您可以使用非常复杂的表达式来增加CPU负载。

使用大量派生表,您甚至可能会耗尽内存。

答案 1 :(得分:1)

您没有采取足够的措施审核数据库查询。您的脚本中的方法(没有回声)称为blind injection,它仍然非常可以实现接管或注入。

尝试使用自动SQL注入工具,例如SqlMap。您的查询会对结果感到惊讶。您还可以针对您的查询尝试unixwiz中的一些示例。虽然那些对他的目标非常具体,但其背后的所有理论和证据都是合理的。

答案 2 :(得分:0)

注入以下内容:

"' OR 1'"

答案 3 :(得分:0)

截断;

' or 1=1; truncate table users; --

掉落;

 ' or 1=1; drop table users; --
我认为可以做到。