用SQL注入攻击PHP代码

用SQL注入攻击PHP代码,php,sql,sql-injection,Php,Sql,Sql Injection,我有一些类似这样的代码,它对SQL注入是开放的。我们被黑客攻击了,现在我们修复了它。我只想知道输入(用户名和密码)必须是什么才能破解这个代码。我的意思是即使你输入 username = something' OR 'x'='x 然后,您可以检索表中第一个用户的密码,而不考虑用户名。但是,在if中,我们检查此密码是否正确。我假设密码非常简单(就像123456一样简单),黑客从字典中使用了蛮力。然而,我想知道是否有其他方法可以使用一些注入来破解此代码,而不是强制输入密码 <?php $use

我有一些类似这样的代码,它对SQL注入是开放的。我们被黑客攻击了,现在我们修复了它。我只想知道输入(用户名和密码)必须是什么才能破解这个代码。我的意思是即使你输入

username = something' OR 'x'='x
然后,您可以检索表中第一个用户的密码,而不考虑用户名。但是,在
if
中,我们检查此密码是否正确。我假设密码非常简单(就像
123456
一样简单),黑客从字典中使用了蛮力。然而,我想知道是否有其他方法可以使用一些注入来破解此代码,而不是强制输入密码

<?php
$username=$_POST['username'];
$password=$_POST['password'];

$result=runQuery("SELECT password FROM tbl_users WHERE username='".$username."''");
$row=mysql_fetch_array($result);

if($row['password']==$password){
    -- do sth... create a cookie etc..
}
else{
    --go to another page...
}
?>

如果黑客通过值:

$username=“”或*或“

然后查询将是:

从用户名为“”或*或“”的tbl_用户中选择密码-这将选择任何用户

但黑客可以:

$username=“”;从用户名=*或“”的tbl_用户中删除*

从用户名为“”的tbl_用户中选择密码;从用户名为*或“”的tbl_用户中删除*

或者可以通过
UPDATE
更改任何密码

<?php
$username=$_POST['username'];
$password=$_POST['password'];

$result=runQuery("SELECT password FROM tbl_users WHERE username='".$username."''");
$row=mysql_fetch_array($result);

if($row['password']==$password){
    -- do sth... create a cookie etc..
}
else{
    --go to another page...
}
?>
安全
mysql\u real\u escape\u string
preg\u match(“/^[a-zA-Z0-9]{3,15}$/”,$username)
,例如。

如果黑客通过值:

$username=“”或*或“

然后查询将是:

从用户名为“”或*或“”的tbl_用户中选择密码-这将选择任何用户

但黑客可以:

$username=“”;从用户名=*或“”的tbl_用户中删除*

从用户名为“”的tbl_用户中选择密码;从用户名为*或“”的tbl_用户中删除*

或者可以通过
UPDATE
更改任何密码

<?php
$username=$_POST['username'];
$password=$_POST['password'];

$result=runQuery("SELECT password FROM tbl_users WHERE username='".$username."''");
$row=mysql_fetch_array($result);

if($row['password']==$password){
    -- do sth... create a cookie etc..
}
else{
    --go to another page...
}
?>

安全<例如,code>mysql\u real\u escape\u string
preg\u match(“/^[a-zA-Z0-9]{3,15}$/”,$username)

在PDO库中使用变量绑定。

在PDO库中使用变量绑定。

使用布尔盲或时间盲注入黑客可以检索所有数据库结构

例如:

username = 'admin' and if(1=1, sleep(10), 5222) #

此查询需要10秒钟才能返回并确认您的条件为
true
false
。使用信息模式和SQL条件测试可以检索所有数据库信息。

使用布尔盲或时间盲注入黑客可以检索所有数据库结构

例如:

username = 'admin' and if(1=1, sleep(10), 5222) #

此查询需要10秒钟才能返回并确认您的条件为
true
false
。使用信息模式和SQL条件测试,您可以检索所有数据库信息。

我相信您没有读到有关SQL注入的内容。这个问题似乎离题了,因为它是一个代码检查请求。这更适合codereview.stackexchange.com为了防止sql注入,您需要使用
PDO
mysqli
。在您的示例中,您甚至没有转义您的输入。正如Mike所说,我真的不相信你一开始就读过关于sql注入的任何内容。用户名:黑客攻击的影响是什么?我不相信你读过关于sql注入的内容。这个问题似乎离题了,因为它是一个代码审查请求。这更适合codereview.stackexchange.com为了防止sql注入,您需要使用
PDO
mysqli
。在您的示例中,您甚至没有转义您的输入。正如Mike所说,我真的不相信你一开始就读过任何关于sql注入的内容。用户名:黑客攻击的效果如何?谢谢你的回答。但是他不是必须知道表名才能操作它们吗?tbl_用户未知$username=“”;从用户名=*或“”的tbl_用户中删除*;当然,但如果启用了“错误报告”
,则可能会泄漏。此外,黑客还可以尝试随机查询组合以获得答案。但是他不是必须知道表名才能操作它们吗?tbl_用户未知$username=“”;从用户名=*或“”的tbl_用户中删除*;当然,但如果启用了“错误报告”
,则可能会泄漏。此外,黑客还可以尝试随机查询组合