20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

2019-2020-2 20174326旦增列措《网络对抗技术》 Exp8 Web基础

一、实验目标

(1)Web前端HTML

   能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

(2)Web前端javascipt

  理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。

(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

(4)Web后端:编写PHP网页,连接数据库,进行用户认证

(5)最简单的SQL注入,XSS攻击测试

功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。

二、实验步骤

(一)Web前端HTML

1.使用  service apache2 start  启动Apache,使用  netstat -aptn  查看端口使用情况,可以看到80端口被Apache2监听。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

 2.在浏览器栏输入127.0.0.1,打开如图网页,说明启动Apache成功。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

3.使用cd命令进入/var/www/html 目录,使用vim命令新建一个HTML文件【login.html】,并输入以下内容。

 

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础
</head>
<body>
<form action="login.php" method="post" name="myform">
<ul>
<li>姓名:<input type="text" name="name" id="name" /></li>
<li>密码:<input type="text" name="pw" id="age" /></li>
<li><input type="submit" id="bt"/></li>
</ul> 
</form>
</body>
20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

Html网页如图。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

(二)Web前端javascipt

1.在login.html文件添加如下内容:

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础
<script type="text/javascript">
window.onload=function()
{
var bt=document.getElementById("bt");
bt.onclick=function()
{
if(document.myform.name.value=="")
{
alert("用户名不能为空!");
document.myform.name.focus();
return false;
} 
else if(document.myform.pw.value=="")
{
alert("密码不能为空!");
document.myform.pw.focus();
return false; 
}
}
}
</script>
20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

2.当用户名输入为空时,效果如图:

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 (三)Web后端:MySQL基础

1.使用如下指令执行数据库的相应操作。

/etc/init.d/mysql start:开启MySQL服务 

mysql -u root -p : 使用用户权限进入,默认密码是password

 use 数据库名 :进入数据库,这里进入的是mysql数据库。

update user set password=PASSWORD where user=‘root‘; : 修改用户root的密码,改成PASSWORD。

 

flush privileges;  :更新权限,输入 exit 退出,然后用修改后的密码登录。

 20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

2.使用如下命令执行数据库内建表、插入数据等操作。

create database xn;  创建数据库,名为xn

 show databases;  查看已有的数据库。

use xn;  进入刚刚创建的数据库xn。

create table login_table (username VARCHAR(20),password VARCHAR(20));  在xn数据库内建立新表,新表的名为login_table,设置字段信息,这里是设置了username和password两个字段,类型为varchar。

show tables;  查看表的信息。

insert into login_table values(‘4301‘,‘xunnuo‘);  向login_table表中插入数据。

select * from login_table;  可以看到login_table表中新增的数据。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

  3.使用如下命令新建用户。

 grant select,insert,update,delete on xn.* to xunnuo@localhost identified by "xunuo";  其中,xn是数据库名称,xunuo是新建的用户名,双引号内xunuo是新用户密码。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

使用新的用户名和密码登录。

 

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础 

(四)Web后端

 1.使用cd命令进入/var/www/html目录,使用vim新建一个php测试文件test.php,文件中输入:

 

<?php
echo ($_POST["a"]);
include($_POST["a"]);
echo "This is 4301 php test page!<br>";
?>

 

在浏览器中输入localhost:80/phptest.php?a=/etc/passwd 

 20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

 

 可以看到末尾的字符串“This is 4326 php test page!”。

2.新建一个内容如下的php文件,名为login.php,注意login.html中的【form action】应一致,也为【login.php】。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础
<?php
$uname=$_POST["name"];//这里的应为login.html表单项输入内容的name
$pwd=$_POST["pw"];//同上
echo $uname;
$query_str="SELECT * FROM login_table where username=‘$uname‘ and password=‘$pwd‘;";//这里login_table即是数据库中新建的表的名字
$mysqli = new mysqli("127.0.0.1", "xunuo", "xunuo", "xn");//这里先后是本机地址,数据库用户名,对应密码,数据库名称

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!<br>";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
    if ($result->num_rows > 0 ){
            echo "<br>Welcome!!! <br> ";
    } 
    else {
        echo "<br> login failed!!! <br> " ; }
    /* free result set */
    $result->close();
}
$mysqli->close();
?>
20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

3.在浏览器输入127.0.0.1/login.html,输入之前插入数据库中的用户名和密码。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

输入错误的用户名和密码。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

 输入不存在的用户和密码。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

(五)最简单的SQL注入,XSS攻击测试

1.SQL注入

用户名输入‘ or 1=1#,密码任意输入,可以成功登录。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

 

 这是因为输入的用户名和我们的代码中select语句组合起来变成了【select * from users where username=‘ ‘ or 1=1#‘ and password =‘ ‘】,#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件永远成立,所以不管密码是否输入正确,都能够成功登陆。

2.XSS攻击

将一张图片放在/var/www/html目录下,使用如图命令提权。

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

在用户名输入<img src="1.jpg(图片名)" />,密码随意输入,就看到图片。

 20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

三、实验体会与思考

1.基础问题回答

(1)什么是表单

表单就是html网页中用户可以输入的数据部分,这些数据可以连接数据库,提交到后端。

(2)浏览器可以解析运行什么语言。

html、php、javascript、python、xml。

(3)WebServer支持哪些动态语言

 

 ASP,Active Server Pages,一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用Java script作为自己的开发语言。
PHP,一种跨平台的服务器端的嵌入式脚本语言,借用C、Java、Perl语言的语法,并融合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库,PHP、MySQL数据库和Apache Web服务器是一个比较好的组合。是一个开源语言。
JSP,Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

 

2.实验体会

本次实验,在linux环境下,结合html、php、mysql编写出了能够载入用户数据的网页,功能有些简易,但是操作十分简单,比在windows环境下更加容易。

 

20174326旦增列错 -202019-2020-2 《网络对抗技术》 Exp8 Web基础

上一篇:app的deviceName,apppackage,appactivity获取


下一篇:url_for函数——快速寻找url