20155313 杨瀚 《网络对抗技术》实验八 Web基础

20155313 杨瀚 《网络对抗技术》实验八 Web基础

1、实验目的

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

  • 2.Web前端javascipt
  • 理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。php

  • 3.Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表html

  • 4.Web后端:编写PHP网页,链接数据库,进行用户认证前端

  • 5.最简单的SQL注入,XSS攻击测试
  • 功能描述:用户能登录,登录用户名密码保存在数据库中,登录成功显示欢迎页面。java

2、基础问题回答

  • 1.什么是表单
  • 答:表单通常是网页中负责收集数据的一种模块。表单包括两个部分:一部分是HTML源代码用于描述表单,另外一部分是脚本或应用程序用于处理提交的信息。mysql

  • 2.浏览器能够解析运行什么语言。
  • 答:浏览器能够解析运行HTML/CSS/JSP。web

  • 3.WebServer支持哪些动态语言
  • 答:WebServer支持ASP、PHP和JSP三种动态开发语言。sql

3、实验内容

第一阶段

  • 1.首先咱们使用指令sudo apt-get install apache2安装apache,可是显示我已经安装完毕。
  • 接着咱们使用apachectl start启动apache,而且使用netstat -aptn查看开放的端口号。
  • 咱们使用浏览器访问虚拟机的ip地址就能够查看启动apache是否成功。
  • 同时咱们在在/var/www/html这个路径里使用vi test.txt建立一个测试文件,咱们在这个txt文件里输入本身的学号,而后在浏览器中访问ip地址/test.txt,而后就会看到咱们输入的学号,证实apache是可用的。
    数据库

  • 2.接下来我参考学长的web前端编写了一个登录界面的html文件,而且写入一个javascript来进行一个登录信息的验证,验证是否输入了用户名和密码,而后在浏览器中访问这个html。

  • 没有输入用户名的状况。
  • 没有输入密码的状况。
    apache

第二阶段

  • 1.首先咱们先使用sudo apt-get install mysql安装SQL,可是显示没法定位软件包,不过咱们尝试运行数据库的时候发现数据库已经安装好了。

  • 2.接着咱们使用mysql -u root -p使用默认的root用户进入数据库,默认的密码是p@ssw0rd。而后咱们使用use mysql;来选择默认的数据库。(PS:咱们在数据库里输入命令之后都要在结束的时候打一个;
  • 进入数据库之后咱们先尝试使用update user set password=PASSWORD("新密码") where user='root';来修改密码,而后输入flush privileges;来更新权限。

  • 以后咱们输入quit来退出数据库使用更新之后的密码来登录数据库,发现成功登录,说明修改密码成功。

  • 3.接着咱们输入create database test建立一个test数据库,并输入show databases进行查看。
  • 而后咱们在数据库里使用create table 表名 (字段设定列表);这个格式来建一个表,用来存储咱们准备在网页登录界面使用的用户名和密码。(结尾记得输入;哦)
  • 再使用insert into 表名 values('值1','值2','值3'...);这个格式来插入数据。
  • 最后使用select * from 表名来查看表内的数据。

  • 4.为了后面的实验咱们须要添加一个新的登录用户,咱们输入grant select(insert,update,delete) on 数据库.* to 用户名@登陆主机 identified by "密码";建立新的用户,而且将test的库绑定到这个用户上。
  • 尝试登录,成功。

第三阶段

  • 1.一样的咱们在/var/www/html这个路径里建立一个php文件,输入学号并在浏览器里进行测试。

  • 2.而后咱们能够利用PHP和MySQL结合以前编的登陆网页进行简单的用户身份认证,参考学长的php代码,可是有些地方须要进行修改,在5201同窗的帮助下成功修改,用红框框起来的是修改过的。
  • 而后咱们将以前的html文件中的一个action的值更改为咱们编写的php文件。

  • 3.若是咱们以前没有在数据库中建立一个新的用户的话会出现下面链接失败的状况。

  • 4.最后咱们编写完成之后尝试登录,分别输入正确的密码和错误的密码,都能成功链接数据库,而且进行用户名与密码的验证。

第四阶段

  • 1.最后这个阶段咱们进行SQL注入攻击(终于进入总体了)。首先咱们在用户名中输入' or 1=1#,密码随便输入,咱们会发现咱们能够直接登录?原始是咱们输入的用户名中有一个#,与后面的查询语句合成之后会变成select * from lxmtable where username='' or 1=1#' and password=''#会把后面的password的判断给注释掉,而以前的1=1是永真式,因此这个条件成立,因而能够成功登录。

  • 2.而后咱们能够经过SQL注入将用户名和密码保存到数据库中,可是咱们须要修改一下以前的代码,将咱们以前的php代码中的if ($result = $mysqli->query($query_str))改为if ($result = $mysqli->multi_query($query_str)),而后在用户名中输入';insert into testtable values('yh','123456','20155313');#,接着咱们到终端查看输入先后的表单的区别,发现添加用户成功。
  • 注:SQL注入,就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来讲,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它能够经过在Web表单中输入(恶意)SQL语句获得一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

  • 3.最后咱们使用XXS攻击测试。咱们在用户名一栏输入<img src="jordan.jpg" />20155313</a>,而后随便输入密码点击登录,发现显示登录失败,判断多是代码的安全性过高了,所以没法实现攻击。而后我在同窗主机上使用她的代码进行测试,发现攻击成功。
  • 同窗的虚拟机上能够实现攻击。
  • 最后我修改了代码,将以前注释掉的部分删掉,结果在本身的虚拟机上xxs攻击最终也成功了。

  • 注:XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种常常出如今web应用中的计算机安全漏洞,它容许恶意web用户将代码植入到提供给其它用户使用的页面中。好比这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞因为被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

4、实验体会

  • 本次实验咱们使用到了web编程的知识,是上个学期学习的,看来学习效果挺好,没有忘记太多,可是在具体的编程实现上仍是有所遗漏的,本次实验帮助咱们从新复习了web编程的内容。本次实验的攻击环节不是不少,主要时间都花费在了制做攻击的环境,目前在验证登录环节针对数据库的攻击仍是较为常见的,所以在编写web代码的时候应该保障其安全性,不要给数据库攻击留下攻击的机会。本次实验还接触到了php代码,用来执行动态网页的action操做,比以前学习的jsp来讲,php更加简单,适合咱们编写这种较小型的测试代码。
相关文章
相关标签/搜索