20154327 EXP8 Web基础
基础问题回答
(1)什么是表单?
- 表单:表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分:
- 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
- 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
- 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作
(2)浏览器可以解析运行什么语言
- 超文本标记语言:HTML
- 可扩展标记语言:XML
- 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
(2)WebServer支持哪些动态语言
- 目前,最常用的三种动态网页语言有ASP(ActiveServerPages),JSP(JavaServerPages),PHP(HypertextPreprocessor)。
实验过程
Web前端HTML
kali:192.168.152.134
1.环境配置
检查80端口有没有被占用:netstat -aptn | grep 80
杀死占用的进程:kill 2380
打开apache2:service apache2 start
检测apache有没有正常工作
这里为了区分,我又将自己的端口号改为了4327.
2.编写网页
进入apache2的存储html文件的文件夹/var/www/html修改相应html文件,设计自身表单
老师上课提到了QQ的登陆界面,我便去网上找了下QQ登陆界面的html源码,效果如下
保存后在浏览器访问:localhost:4327/4327.html
在上面的文本框内随意输入,然后点击授权并登陆,但由于下载的html里面没有写action的代码,点击后没有任何变化。
3.Web前端javascipt
- 以下使用javascript创建一些简单的用户名密码的验证规则(用户名不能为空以及对密码长度做出限制)
<html>
<head>
<script>
function username_test(){
var nameTest=document.getElementById("username");
if(nameTest.value==""){
alert("用户名不能为空");
}
}
function password_test(){
var pwdTest=document.getElementById("password");
if(pwdTest.value.length<6){
alert("密码长度不得少于六位");
}
}
</script>
</head>
<body>
</body>
</html>
Web后端MySQL基础
1.mysql数据库基础使用
- 开启sql服务:/etc/init.d/mysql start
- 使用root身份登陆:mysql -u root -p
- 输入密码,默认为p@ssw0rd,随后进入mysql
- 使用:show databases;可以查看数据库里库表的基本信息
use mysql; 选择mysql数据库
select user, password, host from user; 查看mysql库中的user表,表中存储着用户名、密码与权限
UPDATE user SET password=PASSWORD("4327") WHERE user='root'; 更换密码为4327
输入flush privileges; 更新权限
quit 退出
3.Mysql中建库建表
- CREATE SCHEMA
4327_log
; 建名为4327_log的库 - CREATE TABLE
4327_log
.users
( 表名为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 '');
4.添加用户
- 输入use 4327_log打开表
- 添加用户名与密码均为4327的用户:
- insert into users(userid,username,password,enabled) values(2,'154327',password("lovezh"),"TRUE");
4.Web后端数据库身份认证
1.登陆基础编写
- 在/var/www/html文件夹下编写4327_login.html登陆界面
并编写跳转界面4327_login.php
<?php
echo ($_GET["A"]);
include($_GET["A"]);
echo "hello this is 20154327<br>";
?>
登陆成功界面:
PHP+MySQL实现登录网页编写
这一步卡了好久,换了好多种不同的PHP代码,也将自己的数据库修改无数次,各种不同的代码各有各的问题,最后终于将一个修改成功,这里贴出我的解决方案,供遇到相同问题的同学参考。
在/var/www/html文件夹下编写123.html登陆界面并编写跳转界面login.php
这里直接给出最终修改成功的代码,以及解决出现问题的方法。
<?php
$uname=($_POST["username"]);
$pwd=($_POST["password"]);
echo $uname;
$query_str="SELECT * FROM yzhtable where username='$uname' and password='$pwd';";
/* echo "<br> {$query_str} <br>";*/
$mysqli = new mysqli("127.0.0.1", "yzh", "4327", "4327_log");
/* check connection */
if ($mysqli->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 "<br> Welcome login Mr/Mrs:{$uname} <br> ";
} else {
echo "<br> login failed!!!! <br> " ;
}
/* free result set */
$result->close();
}
$mysqli->close();
?>
登陆成功界面:
登陆失败界面:
在调试时遇到了这个问题,打开测试页面的时候出现如下错误:Forbidden
You don't have permission to access /123.html on this server.
开始我以为我配置出错,花半天时间都没有搞定,最后仔细都了下英文,感觉是权限不够.
原因:apache权限不够。
解决方法:更改文件权限;cd过去更改权限,权限指令在一开始的实验楼上有学,修改为755,chmod 755 123.html
5.简单SQL注入
1.永真式
- 在用户名输入框中输入' or 1=1#,密码随便输入,就可以登陆成功
2.sql语句注入
在用户名输入框中输入:';insert into yzhtable values('yzhyzh','00000');#SELECT * FROM yzhtable WHERE username='' insert into yqh666table values('yzhyzh','00000');,将用户名为yzhyzh、密码为00000的用户注入yzhtable表中,当时没有成功。
后来发现一直登陆不成功是因为
if ($result = $mysqli->query($query_str))
- 这条语句不允许多条执行,即php防范SQL攻击的措施,改为
if ($result = $mysqli->multiy_query($query_str))
如图
我们在库表中查询一下,出现了yzhyzh这个用户
6.XSS攻击测试
1.DOM—based XSS
- 在用户名输入框中输入:
<img src="1.jpg" />once</a>
然后登陆,
登陆失败,但是会显示那个图片:一直是这个图片破损界面.
这里其他同学也遇到了相同的问题,这里贴出一个解决方法:
同上面网页打不开一样,我初步怀疑是权限不足造成的,cd过去更改权限,权限指令在一开始的实验楼上有学,修改为755,chmod 755 1.jpg
成功打开
2.弹窗
- 在用户名输入框中输入:后点击登陆,出现弹框:
实验总结与体会
- 最大的感悟就是做实验不能懒,前面几部分在老师刚布置下来就完成了,但后面一看要综合就拖了下去,到现在才完成。
- 实验整体感觉比之前几次要难一些,因为牵扯到了需要自己去发现问题并想办法解决,而且这次实验算是真正的各种问题层出不穷,只能一点点解决,也正因为这样,这次实验我反反复复做了很多遍,但也因此加深了印象。
20154327 EXP8 Web基础的更多相关文章
- 20155326《网路对抗》Exp8 WEB基础实践
20155326<网路对抗>Exp8 WEB基础实践 实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...
- 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础
2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...
- 20145236《网络对抗》Exp8 WEB基础实践
20145236<网路对抗>Exp8 WEB基础实践 一.基础问题回答 什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框. ...
- 20145215《网络对抗》Exp8 Web基础
20145215<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...
- 20145208 蔡野 《网络对抗》Exp8 Web基础
20145208 蔡野 <网络对抗>Exp8 Web基础 本实践的具体要求有: (1).Web前端HTML(1分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POS ...
- 20155202《网络对抗》Exp8 Web基础
20155202<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...
- 20155204《网络对抗》Exp8 Web基础
20155204<网络对抗>Exp8 Web基础 一.基础问题回答 1.什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用C ...
- 20155206 Exp8 WEB基础实践
20155206 Exp8 WEB基础实践 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以 ...
- 20155207 EXP8 Web基础
20155207 EXP8 Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建 ...
随机推荐
- CIKM 2013推荐系统论文总结
这几天在家没事,介绍几篇CIKM上关于推荐系统的文章, Personalized Influence Maximization on Social Networks Social Recommenda ...
- 漫谈 Clustering (4): Spectral Clustering
转:http://blog.pluskid.org/?p=287 如果说 K-means 和 GMM 这些聚类的方法是古代流行的算法的话,那么这次要讲的 Spectral Clustering 就可以 ...
- jQuery插件开发精品教程,让你的jQuery提升一个台阶(转)
原文:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发 ...
- 【JAVA EE企业级开发四步走完全攻略】
本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...
- Django 模型中DateField字段
DateField¶ class DateField([auto_now=False, auto_now_add=False, **options])¶ 这是一个使用Python的datetime.d ...
- Django 创建模型 激活模型 简单的使用模型
创建模型: 在你的开发环境中,已经有一个“项目” —— 已经建立起来,你将开始在上面做一些东西. 你编写的每个Django应用都是一个遵循特定约定的Python包. Django自带一个工具,它可以自 ...
- phpcms利用表单向导创建留言板(可以回复)
这篇博客写的很详细,可跳转到如下链接: http://blog.aiwebcom.com/%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE/phpcms/456.html 注: ...
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)
一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...
- Linux实用指令(1):运行级别&找回密码&帮助指令&文件目录类
指令运行级别: 0 :关机 1 :单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5 ,要修改 ...
- 第八章.Spring MVC
基于MyEclipse开发 工程结构: 所使用到的jar: 代码: FruitControllerTest.java public class FruitControllerTest implemen ...