用SQL注入攻击PHP代码
我有一些类似这样的代码,它对SQL注入是开放的。我们被黑客攻击了,现在我们修复了它。我只想知道输入(用户名和密码)必须是什么才能破解这个代码。我的意思是即使你输入用SQL注入攻击PHP代码,php,sql,sql-injection,Php,Sql,Sql Injection,我有一些类似这样的代码,它对SQL注入是开放的。我们被黑客攻击了,现在我们修复了它。我只想知道输入(用户名和密码)必须是什么才能破解这个代码。我的意思是即使你输入 username = something' OR 'x'='x 然后,您可以检索表中第一个用户的密码,而不考虑用户名。但是,在if中,我们检查此密码是否正确。我假设密码非常简单(就像123456一样简单),黑客从字典中使用了蛮力。然而,我想知道是否有其他方法可以使用一些注入来破解此代码,而不是强制输入密码 <?php $use
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_用户中删除*;当然,但如果启用了“错误报告”
,则可能会泄漏。此外,黑客还可以尝试随机查询组合