20145329 《网络对抗技术》Web基础
实践目标
Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。Web前端javascipt
理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
Web后端:编写PHP网页,连接数据库,进行用户认证
最简单的SQL注入,XSS攻击测试
实验后回答问题
什么是表单
- 表单:可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁。 表单包括两个部分:一部分是HTML源代码用于描述表单,另一部分是脚本或应用程序用于处理提交的信息,搜集表单数据。表单由文本域、复选框、单选框、菜单、文件地址域、按钮等表单对象组成,所有的部分都包含在一个由标识符标志起来的表单结构中,种类有注册表、留言薄、站点导航条、搜索引擎等。
浏览器可以解析运行什么语言
超文本标记语言:HTML
可扩展标记语言:XML
脚本语言
ASP全名Active Server Pages,是一个WEB服务器端的开发环境,采用脚本语言Java script作为自己的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言,借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。
JSP是Sun公司推出的新一代网站开发语言,JSP(Java Server Page)JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。
WebServer支持哪些动态语言
- 常用的有ASP语言,PHP语言和JSP语言
实验总结与体会
- 实验时候各种手抖,输错一个符号或漏一个字符就出现错误,一个实验做好多遍,心累啊。html网页是与用户交互的界面,需要做到界面友好美观,同时也要注意每个句子的语法,特别是按钮提交到后台的语句action,javascript实现与提交到后台连接操作,php实现后端数据库操作。本次实验实现简单的web前端与后台的交互操作,并对数据库设计的漏洞进行简单的攻击,有利于更好的学习数据库。
实践过程记录
Web前端HTML
安装、启停Apache
设置apache监听端口为80,并开启

浏览器上输入localhost:80,页面跳转到上次克隆的网页

一个简单的含有表单的HTML
在apache工作目录cd /var/www/html下新建一个20145329.html文件,编写一个html网页

它在win8本机浏览器上本来是这个样子的

但是到了kali浏览器上(打开浏览器访问:localhost:8088/20145329.html,成功出现如下界面)不识别背景图片路径以及编码方式不同,就变成了这个样子

可以通过alt->view->Text Encoding->Unicode修改编码方式,但是为了方便还是使用英文吧

随意输入字符到用户名和密码,网页没有连接后台,所以login后出现"Not Found"

JavaScript
<html>
<head>
<meta charset ="UTF-8">
<script type="text/javascript">
(function disp_alert()
{
var sUserName = document.form.username.value ;
var sPassword = document.form.password.value ;
if ((sUserName =="") || (sUserName=="Your name")){
alert("Please input the username!");
return false ;
}
if ((sPassword =="") || (sPassword=="Your password")){
alert("Please input the password!");
return false ;
}
}
</script>
</head>
<body>
<form name='form' class="form" method='get' action='login.php' >
<input type="text" placeholder="Username" name='username'>
<input type="password" placeholder="Password" name='password'>
<button type="submit" onclick="disp_alert()" value="submit" />submit</button>
</body>
</html>
- 验证用户名、密码的规则

Web后端
php测试
代码
";
?>20145329
在浏览器中输入localhost:80/5329test.php,显示

mysql
安装、启动MySQL:
/etc/init.d/mysql start,并以root身份登录:mysql -u root -p
显示各个数据库名称,并显示mysql库中已有的用户名、密码与权限


修改密码

更新权限

exit退出当前用户并重新使用新密码进入
创建用户

建库

建表

往新建的库里面插入数据

Web后端
PHP网页
在/var/www/html文件夹下输入leafpad login.html,编写登录网页,在同样的目录下输入leafpad login.php,通过php连接数据库
连接数据库,括号里面依次为主机、mysql用户、密码、数据库名称

进行用户认证:在浏览器中输入localhost:80/login.html访问登陆页面

登录失败,请教了棒棒哒昊阳同学,是因为新建的表单里面我的密码是经过hash的,而我的php代码里面取得我输入的密码提交到数据库对比的时候是没有经过hash的,所以输入对的密码也会比对失败,不能登录成功,修改php代码,把输入密码框里的密码做一个hash处理就可以比对成功修改部位如下:

输入正确用户名和密码,登录成功

用户名和密码错误,登录失败

给登录成功一个welcome的页面,在/var/www/html目录下新建一个welcome.php,代码参照LTC同学的,在login.php就加入下列代码

登录成功后跳转到如下界面

最简单的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用户名中输入
' or 1=1#永真式,密码随意

登陆成功

通过SQL注入将用户名和密码保存在数据库中'
insert into users(userid,username,password,enabled) values(2,'29',password("123456"),"TRUE");#
翻译过来就是SELECT * FROM users WHERE username='';insert into users (userid,username,password,enabled) values(2,'29',password("123456"),"TRUE"");
把($result = $mysqli->query($query_str))改为$result = $mysqli->multi_query($query_str)实现可以执行多条SQL语句

用户名输入sql语句,密码为空,登录显示

数据库中查询有新的语句加入

返回登陆界面,使用刚刚插入的用户名和密码登录成功

XSS攻击测试
登录界面用户名输入


登录出现下图

20145329 《网络对抗技术》Web基础的更多相关文章
- 20145326蔡馨熤《网络对抗》—— Web基础
20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...
- 20155305《网络对抗》Web基础
20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...
- 20155307实验八 《网络对抗》 Web基础
20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...
- 20155311《网络对抗》Web基础
20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...
- 20145216史婧瑶《网络对抗》Web基础
20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...
- 20145227鄢曼君《网络对抗》Web基础
20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...
- 20145312袁心《网络对抗》Web基础实践
20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...
- 20145321 《网络对抗》 Web基础
20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...
- 20145330 《网络对抗》 Web基础
20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
随机推荐
- ZOJ 3993 - Safest Buildings - [数学题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3993 题意: 给出n幢建筑,每个都以一个点表示,给出点坐标. 有 ...
- 卿学姐与公主 UESTC - 1324 分块模板题
题意:http://acm.uestc.edu.cn/#/problem/show/1324 中文题,自己看喽. 题解:分块模板,update时顺便更新块属性.ask时先判掉belong[l]==be ...
- iOS多线程编程之GCD介绍(转载)
一.简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 GCD是苹果公司为多核的并行运算提 ...
- 动画-缩放,旋转 CGAffineTransform
CGAffineTransform transform; // = CGAffineTransformScale(flyImoji.transform, 8, 8); transform = C ...
- oracle(五)tkprof 使用 transient kernal profile 侧面 轮廓
1.show parameter sql_trace value是false表示系统当前不会产生trace文件 2.使产生trace文件 alter session set sql_trace = t ...
- 前端 html input标签 placeholder属性 标签上显示内容
前端 html input标签 的placeholder属性 标签上显示内容 <!DOCTYPE html> <html lang="en"> < ...
- break continue练习
break :跳出 1.当break单独存在时,下面不要定义其他语句,因为执行不到. 2.如果出现了循环嵌套,break响应跳出指定的循环,可以通过标号来完成 例如: continue:要么是swit ...
- UUID生成字符串
在向数据库插入新数据时,可能需要插入字符串形式的ID,这时使用UUID可以生成随机字符串: String str = UUID.randomUUID().toString();
- JS 转整型
1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...
- C#:文件、byte[]、Stream相互转换
一.byte[] 和 Stream /// <summary> /// byte[]转换成Stream /// </summary> /// <param name=&q ...