2019-2020-2 网络对抗技术 20175217 Exp 8 Web基础 - 编程之家
公众号推荐
微信公众号搜"智元新知" 关注 微信扫一扫可直接关注哦!
2019-2020-2 网络对抗技术 20175217 Exp 8 Web基础
Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法 ,编写一个 含有表单的HTML
Web前端javascipt
理解JavaScript的基本功能 ,理解DOM。编写JavaScript验证用户名 、密码的规则
Web后端:MysqL 基础:正常安装、启动MysqL ,建库、创建用户 、修改密码 、建表
Web后端:编写PHP 网页,连接数据库 ,进行用户 认证
最简单的sql 注入,XSS攻击测试
二、基础知识
Web前端
基本知识
编程言语:html/css/javascript(js)
运行环境:浏览器
编程用途:在浏览器内部的动态,美观展示形式
html
定义了主体背景颜色为红色
css
属性 标签
中定义,或直接使用@import引用.css
表单form
一般形式:<form name = "" method = "" action = "" >表单属性 </form>
name:表单名称
methodget
:获得,静态;post
:发送,动态,封装在数据包内进行传送,更加安全
action:设置表单处理程序的网络路径和程序名,当用户 提交表单时,服务器将执行action属性 所设置的程序。即相对应的java程序
常用表单属性
一般形式<input type = "" name = "" value = "">
单行文本框输入<input type = "text" name = "" value = "" size = "" maxlength = "">
密码文本框输入<input type = "password" name = "" >
多行文本框输入<textarea name = "" rows = "" cols = "">输入初始显示 的内容 </textarea>
button按钮输入<input type = "button" value = "按钮上显示 的的文字 ">
Web后端
编程语言:PHP /JSP/.NET...
运行环境:应用服务器/中间件
编程用途:对前端提交的数据进行处理并返回相应的HTML网页内容
Apache
PHP
GET/POST
GET把参数包含在URL中,POST通过request body传递参数
GET产生一个 TCP数据包;POST产生两个TCP数据包;
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
sql 注入
通过把sql 命令插入到Web表单提交或输入域名或页面 请求的查询 字符串达到欺骗服务器执行恶意的sql 命令,即利用现有应用程序,将(恶意的)sql 命令注入到后台 数据库 引擎执行的能力,可以通过在Web表单中输入(恶意)sql 语句得到一个 存在安全漏洞的网站上的数据库 ,而不是按照设计者意图去执行sql 语句
输入的用户名 ' or 1=1#
中#
相当于注释符,把后面的内容 都注释掉,1=1
是永真式,条件永远成立,和代码 中select语句组合后变成select * from user_login where username='' or 1=1# ' and password=''
,不管密码是否输入正确,都能够成功登录
XSS攻击
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户 将代码 植入到提供给其它用户 使用的页面 中,比如这些代码 包括 HTML代码 和客户端脚本,攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy),这种类型的漏洞由于被黑客用来编写危害性更大的phishing攻击而变得广为人知。
数据库
编程语言:PHP /JSP/.NET相应的库,sql 语言
运行环境:数据库 服务器
编程用途:基本的数据增、删、改、查
MysqL
启动/etc/init.d/MysqL start
重启/etc/init.d/MysqL d restart
进入MysqL -u [用户名 ] -p
修改密码 update user set password=PASSWORD("[新密码]") where user='[用户名 ]'
查看现存的数据库 show databases;
查看现存的表show tables;
建库create database [库名];
建表并设置字段信息create table [表名](username VARCHAR(n),password VARCHAR(n));
使用数据库 use [数据库 名]
插入数据insert into [表名] values('[表用户名 ]','[表密码]');
退出 exit/quit
三、实验任务
1.Web前端: HTML
service apache2 start
开启Apache服务
在浏览器中输入Kali的IP打开Apache的默 认网页来验证是否开启,如下图所示可正常打开Apache介绍网页即为正常工作
查看端口占用情况,可以使用指令netstat -aptn
输入命令长度cd /var/www/html
进入该目录,并vi 5217_form_1.html
编写一个 简单的含表单的网页
在浏览器中打开该网页file:///var/www/html/5217_form_1.html
action:参数指定了后台 服务器处理这个表单的脚本,或者简单理解为点击提交后显示 的页面
method:参数如果是GET,后面的输入值会显示 在URL中提交;如果是POST则封装到数据中提交
onsubmit:是一个 事件,提交时触发。
2.Web前端: JavaScript
在原有5217_form_1.html
基础上,可以添加 一段JavaScript代码 ,以完成对用户 是否填写邮箱和密码的判断。修改 后的5217_form_2.html
如下所示:
进入登录 页面 file:///var/www/html/5217_form_2.html
若没有填写用户名 和密码则报错
3.Web后端: MysqL 基础
正常安装、启动MysqL 、修改密码
使用命令show databases;
(注意需要后面加;)查看数据库
输入update user set password=PASSWORD("20175217") where user='root';
更改用户 root的密码为20175217
输入select user, password, host from user;
查看当前用户 信息
建库、创建用户 、建表
使用命令create database wyf;
新建一个 名为wyf
的数据库
使用命令show databases;
,就可以看到这个新建的数据库 了
使用命令create table user_login (useremail VARCHAR(20),password VARCHAR(20));
创建一个 名为user_login
的表,表中有类型为VARCHAR(20)的两个字段useremail
和password
使用命令show tables;
查看表信息,可以看到我们刚刚创建的表格user_login
使用命令insert into user_login values('20175217@qq.com','20175217');
向表中useremail
和password
插入数据,即设置登录 的email为20175217@qq.com
,登录 密码为20175217
使用命令select * from user_login;
查询表 user_login
中的所有数据
grant select,insert,update,delete on wyf.* to wuyifan@localhost identified by "20175217";
将对某数据库 的所有表的select,insert,update,delete权限授予当前主机localhost登录 的用户 wuyifan
,登录 密码是20175217
4.Web后端:编写PHP 网页,连接数据库 ,进行用户 认证
使用命令sudo apt-get install PHP
安装最新版PHP
<?PHP
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is my PHP test page!<br>";
?>
在浏览器网址栏中输入localhost:80/PHP test.PHP ?a=/etc/passwd
,可看到/etc/passwd
文件 的内容
将表单5217_form_2.html
中的action
设为login.PHP
,表单中数据将被送入login.PHP
进行处理
编写后台 /var/www/html/login.PHP
,尝试获取 表单数据,该PHP 的参数是从前面5217_form_2.html
提交的表单获取 的数据
在浏览器输入192.168.228.128/5217_form_2.html
访问自己的登录 界面,输入登录 的账号与密码
login.PHP
将查询 数据库 wyf
中表格user_login
中的数据,并与此时输入的进行对比,如果相同,通过身份认证,不同则登录 失败
5.最简单的sql 注入,XSS攻击测试
sql 注入
由于之前的实验登录 的账号需要为email
类型,表单中无法输入非email格式的数据通过,所以修改 5217_form_2.html
中的用户 登录 账号为text
类型
在用户名 输入框输入' or 1=1#
,密码任意输入,可登陆成功
原理:
输入的用户名 和我们的代码 中select语句组合起来变成了select * from user_login where username='' or 1=1#' and password=''
,#
相当于注释符,会把后面的内容 都注释掉,而1=1
是永真式,所以这个条件永远成立,所以不管密码是否输入正确,都能够成功登陆
XSS攻击
将一张图片 放在/var/www/html
目录下,在用户名 输入框输入<img src="20175217.jpg" />
,密码随意,就可以读取图片 了
四、基础问题回答
1.什么是表单
表单在网页中主要负责数据采集功能 。表单的英文名称 为form ,用于在网页中为浏览者提供一个 输入各种信息的界面,以便Web应用程序和Web数据库 获取 这些信息。大多数网站的网页设计都需要使用表单元素,例如通过表单来完成用户 注册 信息的输入或者商品订购信息的输入等
一个 表单有三个基本组成部分:
表单标签 :这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法
表单域:包含了文本框、密码框、隐藏域 、多行文本框、复选框、单选框、下拉选择框和文件 上传 框等
表单按钮:包括 提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作
通过get
或者post
方法 都可以获得表单的数据,两者主要区别在于以下几方面:
Get
get方法 将数据打包放置在环境变量QUERY_STRING中作为URL整体的一部分传递给服务器
URL改变,在URL里显示 表单参数的name/value值
只适合有少量参数的表单,因为URL长度有字符限制,不能无限长
涉及安全性的信息,比如用户 密码,不能用get,因为会在URL上显示 ,不安全
Post
post方法 分离地传递数据给服务器表单处理程序,不需要设置QUERY_STRING环境变量,因此POST有更好的安全性
URL不改变,不在URL里显示 表单数据
表单提交的信息没有长度限制,因为这些数据从来也不分配到一个 变量里
涉及安全性的信息,如用户 密码,应采用 post 方式
2.浏览器可以解析运行什么语言
浏览器最基本的语言是html,也就是说浏览器只看得懂html、css、javascript(js)、xml等,其他的服务器端动态脚本,比如PHP 、jsp等,解析工作是在服务器完成的
3.WebServer支持 哪些动态语言
WebServer支持 的动态语言主要是ASP,PHP ,JAVASCRIPT,JAVA,CGI等计算机脚本语言编写出来的执行灵活的互联网网页程序
ASP
ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含超文本标记 语言标记 、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加 交互式内容 (如在线表单),也可以创建使用HTML网页作为用户 界面的web应用程序
PHP
JAVA SCRIPT
HTML 只能提供一种静态的信息资源,缺少动态客户端与服务器端的交互。JAVA SCRIPT,使信息和用户 之间不仅只是一种显示 和浏览的关系,而且实现了实时地、动态的、可交互的表达方式
JAVASCRIPT是一种脚本语言,它采用小程序 段的方式实现编程。它的基本结构形式与ActionScript十分类 似,但她并不需要编译,而是在程序运行过程中被逐行的解释
五、实验中遇到的问题
问题1: 在创建数据库 时出现错误
解决 1: 发现是自己少打了个;
,加上 就好了
问题2: 在测试PHP 时,无法登入网页
解决 2: 使用PHP 需要开启Apache和MysqL ,我当时没有开,开启后就好了
六、实验心得体会
这次实验做的是实现前端、后台 和数据库 的连接与数据传输,通过参考课代表和学姐的博客 完成。因为之前学过一点web,所以理解起来不算困难,但实践起来还是遇到了一些小问题,而且对PHP 代码 不是很熟悉,操作起来也遇到了一些问题。通过本次实验,我掌握了前端、后台 和数据库 的基本操作方法 和一些简单的攻击方法 ,加深了我对web安全知识的理解。在今后的学习中我会继续努力,学习更多知识。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。