MySQL如何注入我自己的网站?

时间:2013-02-09 22:01:18

标签: php mysql

没有任何保护,我有一句话:

$check = mysql_query("SELECT * FROM school_users WHERE username = '".$_POST['username']."'")or die(mysql_error());

在我的PHP中。我该如何注入此代码?我已经尝试了许多其他的东西,但似乎没有任何东西可以用于注射。 mysql_query有自动捕获吗?

2 个答案:

答案 0 :(得分:2)

签入php.ini选项magic_quotes_gpc,您应该将其设置为0以轻松注入SQL。然后你可以尝试注入代码,你可以在浏览器中使用一些REST插件来实现这一点。作为身体中username的值使用,例如这样:

username: "' OR 1=1; --"

这将生成如下查询:

SELECT * FROM school_users WHERE username = '' OR 1=1; --

这将永远为真,并将返回school_users表中的所有行。

答案 1 :(得分:2)

SQL Injection Attacks by Example。它不是特定于PHP的,而是提供并解释了各种常见攻击的例子。

  

“SQL Injection”是未经验证/未经过验证的用户输入漏洞的子集(“缓冲区溢出”是一个不同的子集), 的想法是说服应用程序运行不是的SQL代码意 即可。如果应用程序在运行中天真地创建SQL字符串然后运行它们,则可以直接创建一些真正的惊喜。

正如其他人所指出的那样,"magic quotes"等环境因素可以起到一定的作用,减轻SQL注入的唯一可靠方法是使用经过验证的编码实践。有关减轻此类攻击的方法,请参阅How can I prevent SQL injection in PHP?