20145236《网络对抗》Exp8 WEB基础实践
20145236《网路对抗》Exp8 WEB基础实践
一、基础问题回答
- 什么是表单
- 表单在网页中主要负责数据采集功能
- 一个表单有三个基本组成部分: 表单标签
- 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等
- 表单按钮:包括提交按钮、复位按钮和一般按钮.表单按钮可以用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作
- 浏览器可以解析运行什么语言
- 超文本标记语言:HTML
- 可扩展标记语言:XML
- 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等
- WebServer支持哪些动态语言
- 比较常用的有ASP语言,PHP语言和JSP语言。
二、实验过程记录
Apache
(一)环境配置
- apache是kali下的web服务器,通过访问ip地址+端口号+文件名称可以打开对应的网页。
- 输入命令
vi /etc/apache2/ports.conf更改apache2的监听端口号; - 输入命令
apachectl start打开apahce,并使用netstat -aptn查看端口号,确认apache正确开启,如下图所示: - 在kali下的firefox输入
http://127.0.0.1:5236可以看见上一次实验克隆的网页
(二)前端编程
- 使用
cd /var/www/html在/var/www/html目录下编辑test.html - 在firefox中输入:
http://127.0.0.1:5236/test.html就能打开该网页。 - 如果填写上内容并submit,因为没有上面代码里标出的一行中action指定的php文件,所以会出现not found的提示:
(三)javascript相关
- 相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
- 文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。
- 编写验证用户名和密码的规则:(比如用户名和密码不能为空)
function nameText(){
var name= document.getElementByIdx_x ("username");
var divID= document.getElementByIdx_x ("divName");
divID.innerHTML="";
if(name.value==""){
divID.innerHTML="用户名不能为空";
return false;
}
}
function passText(){
var pass= document.getElementByIdx_x ("password");
var divIP= document.getElementByIdx_x ("divPass");
divIP.innerHTML="";
if(pass.value==""){
divIP.innerHTML="密码不能为空";
return false;
}
}
}
</script>
(四)PHP测试
- 新建一个PHP测试文件
vi /var/www/html/test.php输入如下:
<?php
echo ($_GET["A"]);
include($_GET["A"]);
echo "php page 5212!<br>";
?>
- 用浏览器打开
http://127.0.0.1:5236/test.php,可以看见如下界面,测试成功
(五)MySQL基础
开启sql服务
/etc/init.d/mysql start输入
mysql -u root –p,并根据提示输入密码,默认密码为p@ssw0rd进入MySQL此处可以修改自己的密码:
update user set password=PASSWORD("新密码") where user='root';- 输入
use mysql;,选择mysql数据库 - 输入
select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限 - 输入
UPDATE user SET password=PASSWORD("新密码") WHERE user='root'; - 输入
flush privileges;,更新权限 - 输入
quit退出 
- 输入
重新输入
mysql -u root –p,检测新密码能否成功使用,能成功登录即可。在Mysql中建库建表,输入如下
CREATE SCHEMA `库表的名称`;
CREATE TABLE `库表的名称`.`users` (
`userid` INT NOT NULL COMMENT '',
`username` VARCHAR(45) NULL COMMENT '',
`password` VARCHAR(256) NULL COMMENT '',
`enabled` VARCHAR(5) NULL COMMENT '',
PRIMARY KEY (`userid`) COMMENT '');
- **注意**:此处一定要注意`单引号`和`键盘Esc下面的那个符号`不要写错了!!!
- 
- 向表中添加用户
- use 刚刚建立的库表的表名
insert into users(userid,username,password,enabled) values(1,'用户id',password("用户密码"),"TRUE");
- 输入
show databases,查看新建的库表的信息
(六)php+mysql实现登录网页编写(代码)
在
/var/www/html文件夹下输入vim login.html,编写登录网页在同样的目录下输入
vim login.php,通过php实现对数据库的连接在浏览器中输入
localhost:5236/login.html,就可以访问自己的登陆页面啦,这里套用了一个模板让页面看起来更加美观- 注意:此处的用户名是自己在库表中新建的用户以及对应的密码,在上一节中我新建的用户是:
5236,密码是20145236 
- 注意:此处的用户名是自己在库表中新建的用户以及对应的密码,在上一节中我新建的用户是:
在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,输入数据库中没有的就会认证失败
嫌弃这个页面不友好?我们可以加一行代码
header("Refresh:5;url=welcome.php");,实现在5秒之后跳转到welcome.php页面最终登陆成功的样子如下:
(七)SQL注入
- SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
- 具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
- 简单地说,SQL注入的产生原因通常是将用户输入的字符串,当成了 “sql语句” 来执行。
- 搭建一个网站实现用户登录,这一步已经完成。
- 构造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子句总是为真,所以能够成功登录 

- 或者在用户名框中输入
';insert into users(userid,username,password,enabled) values(777,'121212',password("121212"),"TRUE");#,在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了,但是得修改一下之前的代码,因为我们之前编的代码中if ($result = $mysqli->query($query_str))这条判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))便能实现执行多个sql语句 - 接着使用新插入的用户名和密码进行登录,登录成功。
(八)XSS攻击
XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户游览器的控制。
具体来说假如用户提交的数据含有js代码,不做任何处理就保存到了数据库,读出来的时候这段js代码就变成了可执行的代码。一般用户提交的数据永远被认为是不安全的,在保存之前要做对应的处理。
xss攻击可以分成两种类型:非持久型攻击、持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
xss攻击也可以分成三类:
- 反射型:经过后端,不经过数据库
- 存储型:经过后端,经过数据库
- DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。
- 输入
<img src="5236.JPG" />haha</a>先进行简单的测试
2.点击登录就会出现图片5236.JPG的超链接
- 我们还可以给出钓鱼网站的超链接实现XSS攻击。
(九)发帖和会话管理的实现(代码)
- 这一部分采用了写入文件和读取文件从而实现发帖的方式,核心代码有
- 将输入的帖子标题和内容写入文件保存
file_put_contents('data.txt',"title:".$title.",content:".$content."\n", FILE_APPEND);
- 将文件中的数据进行读取,并将
/n替换为换行符<br>$content = file_get_contents("data.txt");echo str_replace("\n", "<br>", $content);
- 在loged.php界面添加一个超链接到test.html界面,即可将之前的登录、会话管理和发帖功能连接起来
echo '<a href="test.html">start a new post!</a>';
- 将输入的帖子标题和内容写入文件保存
- 在浏览器中输入
http://127.0.0.1:5236/logIn.php,进行登录: - 登录成功后如图所示:
- 点击
start a new post!发帖,进入如下界面: - 提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录:
- 点击
CHECK可以查看会话记录:- 通过
test.php中的file_put_contents('data.txt',"title:".$title.",content:".$content."\n", FILE_APPEND);代码,可以查看到会把会话记录写进data.txt,但是我点击一次后并没有相关记录的显示,想想可能是权限问题并不能直接在/var/www/html文件夹下生成文件,所以先后执行命令,新建该文件并赋予可操作的最高权限:touch data.txt和chmod 777 data.txt即可 - 再次点击
CHECK,看见如下图所示的会话记录: 
- 通过
三、实验总结与体会
之前我们也学过一些有关html网页编程的例子,但是接触面比较窄,这次实验又让我们系统的接触了web相关的知识,尤其是在做到sql注入和XSS攻击的时候,我觉得网页攻击还是非常可怕的,因为现在的网页很多都会连接这数据库,虽然关于sql注入和xss攻击防不胜防,但是我们在编写html的时候仍必须了解一些防范知识,避免一些低级的攻击。
20145236《网络对抗》Exp8 WEB基础实践的更多相关文章
- 20145312袁心《网络对抗》Web基础实践
20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
- 20145229吴姗珊《网络对抗》WEB基础实践
20145229吴姗珊<网络对抗>WEB基础实践 基础与实践 基础问题 1.什么是表单 表单是可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 一部分是HTML源代码用于 ...
- 20145226夏艺华 网络对抗技术EXP8 WEB基础实践
20145226夏艺华 网络对抗技术EXP8 WEB基础实践 实验问题回答 1.什么是表单? 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CG ...
- 《网路对抗》Exp8 WEB基础实践
20155336<网路对抗>Exp8 WEB基础实践 一.基础问题回答 1.什么是表单 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等 ...
- 20155326《网路对抗》Exp8 WEB基础实践
20155326<网路对抗>Exp8 WEB基础实践 实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...
- 20155331《网路对抗》Exp8 WEB基础实践
20155331<网路对抗>Exp8 WEB基础实践 基础问题回答 什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签,这里面包含了处理表单数据所用CGI ...
- # 20155337《网络对抗》Web基础
20155337<网络对抗>Exp8 Web基础 实践目标 1. 实践内容 (1).Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...
- 20145326蔡馨熤《网络对抗》—— Web基础
20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...
随机推荐
- DotNetty项目基本了解和介绍
一.DotNetty背景介绍 DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口.让我们在使 ...
- DotNetCore学习-3.管道中间件
中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行一些操作. 请求委托被用来建立请求管道,并处理每一个HTT ...
- ajax+ashx:实现文件的批量导出
背景: 最近公司有一个需求,就是实现excle的批量导出(一次性导出多个excle). 实现方式: 想到的实现方式: 1.发起一个导出请求,然后批量生产需要导出的excle文件,最后将文件生成一个压缩 ...
- Hive原理总结(完整版)
目录 课程大纲(HIVE增强) 3 1. Hive基本概念 4 1.1 Hive简介 4 1.1.1 什么是Hive 4 1.1.2 为什么使用Hive 4 1.1.3 Hive的特点 4 1.2 H ...
- Java并发编程:Java线程池核心ThreadPoolExecutor的使用和原理分析
目录 引出线程池 Executor框架 ThreadPoolExecutor详解 构造函数 重要的变量 线程池执行流程 任务队列workQueue 任务拒绝策略 线程池的关闭 ThreadPoolEx ...
- WEB服务器、HTTP服务器、应用服务器、IIS
转载:https://www.cnblogs.com/brant/p/7209042.html Web服务器: 基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.与 ...
- 使用jquery获取iframe内的元素属性
当需要获取iframe里的内容时需要有几个前提,否则你是获取不到的: 1:当前页面与iframe的src的页面需要在同一个域名下: 2:必须要等iframe里边的页面加载完成才能获取,否则你要获取的标 ...
- 如何在服务器上搭建svn
svn现在依然是一个流行的版本控制工具,但是大多数的人员只会使用客户端,并且也知道可以进行权限控制, 那么今天,我们就来给大家梳理一下 1.如何搭建svn的服务器 2.如何进行svn的权限控制 === ...
- MySQL四种隔离级别和MVCC
事务在一个数据库中的地位尤为重要,尤其是高并发的场合.保证数据库操作的原子性和错误出现情况下的回滚,对数据的安全性和可靠性提供了保障.事务有四大原则,即ACID原则.网上关于这个问题的文章有很多,读者 ...
- 使用mysqladmin extended-status查看MySQL的运行状态脚本
一个好用的使用mysqladmin extended-status查看MySQL的运行状态脚本: mysqladmin -P3306 -uroot -p -h127. -r -i extended-s ...



















