20155211 网络攻防技术 Exp08 Web基础

Stella981
• 阅读 601

20155211 网络攻防技术 Exp08 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攻击测试;功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。

基础问题回答

1)什么是表单?

表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。

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

HTML,XML,Python,PHP,JavaScript,ASP等脚本语言。

3)WebServer支持哪些动态语言

JavaScript、ASP、PHP、Ruby等脚本语言。

实验过程

Web前端:HTML

  • Web开发是基于Apache服务器进行的,经过上次实验后已经安装好Apache。使用指令apachectl start打开Apache服务,使用netstat -aptn查看一下端口占用: 20155211 网络攻防技术 Exp08 Web基础

  • 在浏览器中输入localhost:80,如图所示,说明我们Apache正常工作: 20155211 网络攻防技术 Exp08 Web基础

  • 进入Apache工作目录/var/www/html,新建一个test.html文件,编写一个含有表单能实现输入用户名、密码实现登录的html

  • 代码如下:

    test
    username:
    password:
    auto-Login
  • 结果如下: 20155211 网络攻防技术 Exp08 Web基础

Web前端javascipt

  • 使用JavaScript来编写一个验证用户名、密码的规则,直接在之前的代码上进行修改,重命名为login.html,代码如下所示:

    test
    user
    password
    auto login
  • 结果如下: 20155211 网络攻防技术 Exp08 Web基础

MySQL基础

  • 输入/etc/init.d/mysql start打开mysql服务。

  • 输入mysql -u root -p,以root身份登录,根据提示输入密码,默认密码为password,进入MySQL;

  • 可以对密码进行修改:输入use mysql;,选择mysql数据库;输入update user set password=PASSWORD("20155211") where user='root';,修改密码;输入flush privileges;,更新权限:

  • 输入show databases;查看权限: 20155211 网络攻防技术 Exp08 Web基础

  • 输入create database 库名;建立一个数据库;

  • 输入use 库名;使用刚刚创建的数据库:

  • 输入create table xxytable (userid VARCHAR(100),username VARCHAR(45),password VARCHAR(256),enabled VARCHAR(5));建立数据表;

  • 输入show tables;查看存在的数据表: 20155211 网络攻防技术 Exp08 Web基础

  • 输入insert into yd(userid,username,password,enabled) values(1,'20155211','5211',"TRUE");在表中添加内容;

  • 输入select * from xxytable;查看表中现在的信息: 20155211 网络攻防技术 Exp08 Web基础

  • 在MySQL中增加新用户,使用grant select,insert,update,delete on xxy.* to xxy@localhost identified by "20155211";指令,这句话的意思是将对某数据库的所有表的select,insert,update,delete权限授予某ip登录的某用户。如图所示,增加新用户之后,退出,重新使用新用户名和密码进行登录,登录成功说明增加新用户成功: 20155211 网络攻防技术 Exp08 Web基础

Web后端:PHP网页

  • /var/www/html目录下新建一个test.php测试一下PHP:

    "; ?>
  • 浏览器打开localhost/test.php可看到内容: 20155211 网络攻防技术 Exp08 Web基础

  • 利用PHP和MySQL结合之前编的登录网页进行简单的用户身份认证,这里可以参考老师给的代码编写login.php,代码借鉴了同学的博客

    connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } echo "connection ok!"; /* Select queries return a resultset */ if ($result = $mysqli->query($query_str)) { if ($result->num_rows > 0 ){ echo "
    Welcome login Mr/Mrs:{$uname}
    "; } else { echo "
    login failed!!!!
    " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
  • 在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,反之失败: 20155211 网络攻防技术 Exp08 Web基础

SQL注入

  • 可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  • 在网页登录的用户名中填写' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5(''),#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆: 20155211 网络攻防技术 Exp08 Web基础

  • 或者先在PHP中改语句if ($result = $mysqli->query($query_str))if ($result = $mysqli->multi_query($query_str)),然后在用户名框中输入';insert into xxy values('888','skrr','1234',"TRUE");#在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了(登录前将if ($result = $mysqli->query($query_str))语句改回来)。 20155211 网络攻防技术 Exp08 Web基础

20155211 网络攻防技术 Exp08 Web基础

XSS攻击

  • 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
  • 在登录的用户名中输入<img src="831.jpg" />xxy</a>,读取/var/www/html目录下的图片: 20155211 网络攻防技术 Exp08 Web基础

实验体会

做实验之前听各路同学说这个实验疯狂报错。。不过拖延症万岁,在各路大神的提示下还算顺利的完成了本次实验。。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
可莉 可莉
2年前
20155211 网络攻防技术 Exp08 Web基础
20155211网络攻防技术Exp08Web基础实践内容1.Web前端HTML,能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。2.Web前端javascipt,理解JavaScript的基本功能,理解DOM。
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这