今天主要讲解了命令行查看数据库、数据库连接、越权访问
命令行的使用
在文件根目录下执行cmd,输入数据库的账号和密码进行数据库的访问
输入 show databases;语句查看数据库表,注意是databases后面有一个分号‘;’
show databases;
查看数据库表,show tables;
show tables;
通过查询语句访问数据库表users,select * from users;
select * from users;
通过查询语句查询数据库信息单条信息
select * from users where username='student1' and password='123456';
逻辑语句的优先级,and和or,输入语句select * from users where username=‘stu1’ and password=‘11111’ or 1;可以看到输出的是全部信息,表中并无查询的信息,优先级就是前面所查询的没有信息的语句为假,但是or1与前面进行逻辑运算可以看到最终语句为1也就是为真,所以相当于打出整个表的信息。
select * from users where username='stu1' and password='11111' or 1;
根据不同的名称进行排序,输入语句select * from users order by username;
select * from users order by username;
数据库连接
数据库连接,连接到phpstudy下的mysql,注意的是不要连接本机的另一个mysql数据库
$sql ="select * from users where username='$name' and password='$pass'";#$sql="select * from security";echo $sql;$conn=mysqli_connect('localhost','root','root','score_system');/*localhost或127.0.0.1或本地ip*/
可以看到数据库已经连接成功:
越权访问
在越权访问这里需要使用到抓包工具brupsute,通过php文件的编写实现,其中有login.php、logindeal.php、student.php、teacher.php为主要功能文件,进行越权访问的主要原理是对cookie值的篡改,将其值改成所需要访问的类型值,其中还讲到了对cookie值的注销。
login.php文件:这部分代码包括了对数据库的访问,数据库的连接,连接成功后通过数据库内存储的信息进行分析,通过登录页面输入的信息与数据库信息进行对比,判断输入的用户名和密码是否正确,进而判断登录是否成功。代码如下:
$req=mysqli_query($conn,$sql);$num=mysqli_num_rows($req);if ($num===1){echo "登录成功";$res=mysqli_fetch_array($req);$role=$res['role'];setcookie("username",$name,time()+3600);setcookie("role",$role,time()+3600);header("Location:logindeal.php");echo "<a href='loginout.php'>注销</a>";}else{echo "登录失败!";}
login.php 完整代码:
<?phpecho "<meta charset='UTF-8'>";echo "Hello word!","hello worth!<br>";echo "<br>";$pass=$_POST['pass'];$name=$_POST['name'];$sql ="select * from users where username='$name' and password='$pass'";#$sql="select * from security";echo $sql;$conn=mysqli_connect('localhost','root','root','score_system');//localhost或127.0.0.1或本地ipif ($conn){echo "数据库连接成功!"."<br>";$req=mysqli_query($conn,$sql);/*将数据库里面的数据赋值*/$num=mysqli_num_rows($req);/*返回结果值*/if ($num===1) /*判断输入信息是否与数据库一致*/{echo "登录成功";$res=mysqli_fetch_array($req);$role=$res['role'];setcookie("username",$name,time()+3600);/*设置cookie值的有效时长*/setcookie("role",$role,time()+3600);header("Location:logindeal.php");/*跳转到角色判断界面*/echo "<a href='loginout.php'>注销</a>";}else{echo "登录失败!";}}else{echo "数据库链接失败!";}
?>
logindeal.php文件:这一部分对登录角色信息进行判断,不同角色的信息分别进入不同的界面,完整代码如下:
<?php$role=$_COOKIE['role'];if ($role=="teacher"){header("Location:teacher.php");}elseif($role=="student"){header("Location:student.php");}else{header("Location:login.php");}
?>
下面是登录界面的效果图:
下面是正常登录界面所进入的界面,老师界面是老师好,学生界面是学生好:
下面是使用burpsuite对登录的信息进行抓包,抓包后将其cookie值进行修改:
未修改role前:
修改role之后:
可以看到通过对cookie值中的role进行角色信息的篡改,可以将学生登录的权限界面跳转到教师权限界面。
下面是teacher.php和student.php完整代码:
teacher.php:
<?phpecho "<meta charset='UTF-8'>";echo "老师好!";
?>
student.php:
<?phpecho "<meta charset='UTF-8'>";echo "同学好!";
?>
上面说到的对cookie值的注销代码,loginout.php完整代码:
<?phpecho "<meta charset='UTF-8'>";$name=$_COOKIE['username'];setcookie("username",$name,time()-3600);/*将cookie有效值时间减掉*/echo "cookie已注销";echo $name;
?>