20145320《WEB基础实践》
20145320WEB基础实践
实验问题回答
1.什么是表单
表单可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁。
一个表单有三个基本组成部分: 表单标签
表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等
表单按钮:包括提交按钮、复位按钮和一般按钮.
2.浏览器可以解析运行什么语言
- 超文本标记语言:HTML
- 可扩展标记语言:XML
- 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等
3.WebServer支持哪些动态语言
- 比较常用的有PHP语言和JSP语言。
实验总结与体会
初步认识一个简单的登录界面是如何操作的,但是由于数据库语言为了方便用户使用,便有了较大漏洞,出现类似SQL注入、XSS注入等。这些注入非常巧妙,简直防不胜防,我们今天接触到还是最简单的,只要使用关键词过滤或者正则表达式就可完成避免这些被方法注入。但是还是会有更高级的做法,然后又会出现相应的对策!这个就是一个相互斗争发展的过程!
实践过程记录
(一)环境配置
通过apachectl start开启Apach,使用netstat -aptn查看端口占用:在这里apach2占用端口80
测试apache是否正常工作:在kali的火狐浏览器上输入localhost:80(其实这里的端口号就是/etc/apache2/ports.conf下设置的Apache监听端口号,这里的localhost是你的kali的IP地址(我这里是192.168.47.133),由于上个实验的影响打开的是伪装的网页)
(二)简单的网页编写
去年上网络编程课程时学过类似的内容,直接把内容拷进来了,其实就是几张图片和一些css

(三)MySQL基础
开启sql服务/etc/init.d/mysql start
输入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("新密码") WHERE user='root';
·输入flush privileges;,更新权限
·输入quit退出
重新输入mysql -u root –p,检测新密码能否成功使用,能成功登录即可。
在Mysql中建库建表,输入如下
CREATE SCHEMA `20145320`;
CREATE TABLE `20145320`.`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 '');
向表中添加用户
use 2014530;
insert into users(userid,username,password,enabled) values(1,'20145320',password("88330016"),"TRUE");
(四)php+mysql实现登录网页编写
在/var/www/html文件夹下输入vim 20145320.html,将我去年的所写的代码修改一下
在同样的目录下输入vim login.php,通过php实现对数据库的连接
在火狐浏览器中输入localhost:80/20145320.html,就可以访问自己的登陆页面啦

在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,输入数据库中没有的就会认证失败
最终登陆成功的样子如下

这里有个重大的漏洞!口令以明文形式展现在了用户面前,虽然在数据库中是以MD5压缩的,但是在前端就被看得清清楚楚,更不要说我用burpsuite去截获数据包了!知道这个我甚至都不需要
(五)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“#”号的作用注释掉后面的语句,所以后面就不用验证口令的md5值,而且1=1永远是都是成立的,即where子句总是为真,所以能够成功登录

分析一下出现在地址栏的这些参数'+or+1%3D1%23,所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字),例如空格为%20,等号为%3D,井号为%23,但是还有不会被此方法编码的字符: *、~、-、.
- 通过SQL注入将用户名和密码保存在数据库中
';insert into users(userid,username,password,enabled) values(3,'aaa',password("aaa"),"TRUE");#
翻译过来就是
SELECT * FROM users WHERE username='';
insert into users(userid,username,password,enabled) values(3,'aaa',password("aaa"),"TRUE");
但是页面跳转是空白页,以我的代码来看也就意味着if ($result = $mysqli->query($query_str))不成立,即result为fault。
这是php防范SQL攻击的措施
可以修改为$result = $mysqli->multi_query($query_str)实现多条SQL语句
但是我输入用户名aaa密码aaa登录是不成功的,为了检验语句是否执行成功,我直接进了数据库中查找,看起来显然注入是没有问题的。
据说应该是$result->num_rows>0在我把query改为multi_query的时候出现了问题,于是参照别的同学修改代码为:

我感觉这个是在躲避问题,当多条语句SQL输入时上面的if被执行,当只输入一条SQL语句则两个if被执行
- 输入
';insert into users(userid,username,password,enabled) values(666,'aaa',password("aaa"),"TRUE");#新插入一个用户

8.此时在登录页面输入用户名aaa密码aaa,成功

(六)XSS攻击
输入
20145320可以看见图片

20145320《WEB基础实践》的更多相关文章
- 20155326《网路对抗》Exp8 WEB基础实践
20155326<网路对抗>Exp8 WEB基础实践 实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...
- 20145236《网络对抗》Exp8 WEB基础实践
20145236<网路对抗>Exp8 WEB基础实践 一.基础问题回答 什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框. ...
- 20155206 Exp8 WEB基础实践
20155206 Exp8 WEB基础实践 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以 ...
- 20155210 Exp8 WEB基础实践
Exp8 WEB基础实践 Apache环境配置 apache是kali下的web服务器,通过访问ip地址+端口号+文件名称可以打开对应的网页. 输入命令vi /etc/apache2/ports.co ...
- 20155216 Exp8 WEB基础实践
Exp8 WEB基础实践 实践内容 Apache环境配置 apache是kali下的web服务器,通过访问 ip地址+端口号+文件名称 打开对应的网页. 输入命令 vi /etc/apache2/po ...
- 20155223 Exp8 WEB基础实践
20155223 Exp8 WEB基础实践 基础问题回答 什么是表单? 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素. 表单使 ...
- 20155317王新玮《网络对抗技术》实验8 WEB基础实践
20155317王新玮<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...
- 20155331《网路对抗》Exp8 WEB基础实践
20155331<网路对抗>Exp8 WEB基础实践 基础问题回答 什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签,这里面包含了处理表单数据所用CGI ...
- 《网路对抗》Exp8 WEB基础实践
20155336<网路对抗>Exp8 WEB基础实践 一.基础问题回答 1.什么是表单 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等 ...
- 20145312袁心《网络对抗》Web基础实践
20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...
随机推荐
- js中变量提升(一个是变量,一个是函数表达式都会存在变量提升,函数声明不存在)
一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分.上个简历的例子如: ...
- 从零开始一起学习SLAM | 三维空间刚体的旋转
刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不会发生变化.刚体变换也称为欧式变换. 视觉SLAM中使用的相机就是典型的刚体,相机 ...
- unity3d-代码控制游戏角色控制器移动
先上一个gif看看效果.因为图片大小限制.所以录制的比较小.个人认为效果比较牵强.特别是里面的逻辑代码. 不过我还是认为一切是为了先实现,因为我是刚接触的新手. 工程结构图 这次实现的效果是: 1:摄 ...
- webpack的使用一
1.为什么使用webpack 模块化,让我们可以把复杂的程序细化为小的文件; 类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能 ...
- ssh简单入门级案例教程
准备工作:struts2.3.34+spring4.2.2+hibernate3.3.2 导入需要的开发包: struts开发包---注意:javassist-3.18.1-GA.jar包与hiber ...
- spark-shell下有提示了,但是发现不能退格
配好了Spark集群后,先用pyspark写了两个小例子,但是发现Tab键没有提示,于是打算转到scala上试试,在spark-shell下有提示了,但是发现不能退格,而且提示也不是复写,而是追加,这 ...
- [4]Windows内核情景分析---内核对象
写过Windows应用程序的朋友都常常听说"内核对象"."句柄"等术语却无从得知他们的内核实现到底是怎样的, 本篇文章就揭开这些技术的神秘面纱. 常见的内核对象 ...
- Real Time Credit Card Fraud Detection with Apache Spark and Event Streaming
https://mapr.com/blog/real-time-credit-card-fraud-detection-apache-spark-and-event-streaming/ Editor ...
- CocoaPod 使用(I)
1. 添加一个 Podfile 文件 在终端先找到你要放入 Podfile 的文件路径: cd 文件路径 cd /Users/XXX/Desktop/RAC 然后敲入: pod init 就会给你建立 ...
- Factory Method
Question:Based on the previous article,what could you do if we must add an extra function? For exam ...