我在客户端提供的块中有以下代码:
$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
但这不起作用。
答案 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; --
我认为可以做到。