20145336张子扬《网络对抗》Exp8 Web基础

实践内容

1、简单的web前端页面(HTML、CSS等)

2、简单的web后台数据处理(PHP)

3、Mysql数据库

4、一个简单的web登陆页面例子

5、SQL注入、XSS攻击

实践步骤

实践准备

在实验前我们需要打开apache,apache是kali下的web服务器,通过访问ip地址+端口号+文件名称可以打开对应的网页。

vi /etc/apache2/ports.conf更改apache2的监听端口号

apachectl start 打开apahce,并查看端口号,确认apache正确开启

在kali下的firefox输入ip地址:端口号可以看见apache2的网页

Web前端HTML

进入var/www/html下建立一个html

打开浏览器访问:localhost:xx/xxx.html

javascript相关

相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作

文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口

PHP测试

新建一个PHP测试文件vi /var/www/html/test.php

<?php echo ($GET["A"]); include($GET["A"]);

echo "php page 5212!
"; ?>

用浏览器打开localhost:xxx/test.php,可以进行测试,php数据库是否能够链接成功

MySQL

打开mysql服务

/etc/init.d/mysql start

输入mysql -u root -p,并根据提示输入密码,默认密码为p@ssw0rd,进入MySQL

输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';

输入flush privileges;,更新权限

输入quit退出

使用新密码重新登录就可以

可以使用命令show databases;可以查看基本信息

输入use mysql;,选择mysql数据库

输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限

在Mysql中建库建表

使用create schema 库表的名称;

使用show databases;

使用create table 表名 (字段设定列表);建立数据表,数据表是数据库中一个非常重要的对象,一个数据库中可能包含若干个数据表;使用show tables查看存在的数据表:

使用insert into 表名 values('值1','值2','值3'...);插入数据;使用select * from 表名查询表中的数据

Web后端PHP基础

简单测试完成后,我们可以利用PHP和MySQL结合之前编的登录网页进行简单的用户身份认证,这里可以参考老师给的代码编写login.php

代码如下图

<?php

$uname=($GET["username"]); $pwd=($GET["password"]);

/* echo $uname; */

$query_str="SELECT * FROM users where username='{$uname}' and password='{$pwd}';";

/* echo "
{$query_str} 
";*/

$mysqli = new mysqli("127.0.0.1", "root", "zzy19961122", "zzy_test");

/* check connection / if ($mysqli->connecterrno) { printf("Connect failed: %s\n", $mysqli->connecterror); exit(); } echo "connection ok!"; / Select queries return a resultset */ if ($result = $mysqli->query($querystr)) { if ($result->numrows > 0 ){ echo "
Wellcome login Mr/Mrs:{$uname} 
"; } else { echo "
login failed!!!! 
" ; }

/* free result set */
$result->close();

}

$mysqli->close();

?>

在登录页面中输入数据库中存有的用户名和密码并点击登录进行用户认证,登录成功则显示

登陆失败

SQL注入

SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

简单地说,SQL注入的产生原因通常是将用户输入的字符串,当成了 “sql语句” 来执行。

1、构造SQL语句:在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5('')

以下的两句sql语句等价:

select * from users where username='' or 1=1#' and password=md5('')

select * from users where username='' or 1=1

因为1=1永远是都是成立的,即where子句总是为真,所以能够成功登录

2、通过SQL注入将用户名和密码保存在数据库中

';insert into users(userid,username,password,enabled) values('kali',password("12345"),"TRUE");#

在这里可能会显示失败,我们需要对php文件进行修改

成功后你的表单中会添加进去刚才添加的用户信息

再登陆页面输入用户名kali,密码12345,成功

XSS攻击

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

进行一个简单的测试,在用户名输入框中输入读取/var/www/html目录下的图片:

登陆后就可一显示我们插入的图片

发帖和会话管理的实现

将代码.php文件依旧放在/var/www/html目录下

登录成功后如图所示:

点击start a new post!发帖,进入如下界面:

提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录:

点击CHECK查看发过的帖子,但是却什么内容都没有,由于这个操作是通过从data.txt文件中读取之前发帖时保存的记录来查看发帖内容,但是在/var/www/html目录下根本没有找到这个文件,这就说明之前创建也没有成功,后面发现/var/www/html底下文件默认的都是属于root的,其他用户没有权限进行操作,所以我们可以先使用touch data.txt建一个data.txt文件,再对该文件进行加权,再次发帖查看,可以成功显示之前的发帖历史。

实验问题

(1)什么是表单

表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签、表单域、表单按钮

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

支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。

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

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

20145336 张子扬 《网络对抗技术》web基础的更多相关文章

  1. 20155305《网络对抗》Web基础

    20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  2. 20145217《网络对抗》web基础

    20145217<网络对抗>web基础 一.问题 1.什么是表单? 表单:可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 表单包括两个部分:一部分是HTML源代码用于描 ...

  3. 20145326蔡馨熤《网络对抗》—— Web基础

    20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...

  4. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...

  5. 20155311《网络对抗》Web基础

    20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  6. 20145216史婧瑶《网络对抗》Web基础

    20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...

  7. 20145227鄢曼君《网络对抗》Web基础

    20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...

  8. 20145312袁心《网络对抗》Web基础实践

    20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...

  9. 20145321 《网络对抗》 Web基础

    20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...

  10. 20145330 《网络对抗》 Web基础

    20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...

随机推荐

  1. js处理数组问题,以及数组转化问题

    var str="1,2,1,2,31,2";var arr = str.split(",");for (var i = 0; i < arr.lengt ...

  2. Python面向对象:类、实例与访问限制

    首先记录下面向对象的名词: 对象:python万物皆对象,程序设计的东西在对象上体现. 类:具有相同属性和行为的对象的集合. 消息:各个对象之间通过消息相互联系. 方法:对象功能实现的过程. 封装:把 ...

  3. Alisha’s Party---hdu5437(模拟+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5437 题意:公主有k个朋友来参加她的生日party,每个人都会带价值为v[i]的礼物过来,在所有人到齐 ...

  4. 深入浅出REST(转载)

    add by zhj: 参考http://zh.wikipedia.org/zh/REST 需要注意的是,REST是设计风格而不是标准,它也并没有与哪种协议绑定.不过,我们常按REST设计风格来使用H ...

  5. Java非静态内部类为什么不能有静态成员

    我们可以把InnerClass看成OuterClass的非静态成员,它的初始化必须在外部类对象创建后以后进行,要加载InnerClass必须在实例化OuterClass之后完成 ,java虚拟机要求所 ...

  6. jQuery内部原理和实现方式浅析

    这篇文章主要介绍了jQuery内部原理和实现方式浅析,本文试图从整体来阐述一下jQuery的内部实现,需要的朋友可以参考下 这段时间在学习研究jQuery源码,受益于jQuery日益发展强大,研究jQ ...

  7. MVC前后台获取Action、Controller、ID名方法 以及 路由规则

    前后台获取Action.Controller.ID名方法 前台页面:ViewContext.RouteData.Values["Action"].ToString();//获取Ac ...

  8. [LeetCode] 88. Merge Sorted Array_Easy tag: Two Pointers

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...

  9. [LeetCode] 560. Subarray Sum Equals K_Medium

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  10. [LeetCode] 161. One Edit Distance_Medium

    Given two strings s and t, determine if they are both one edit distance apart. Note: There are 3 pos ...