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 检查文件格式和文件大小
之前有个工作需要用到js检查文件大小和文件格式,网上查了下有个兄弟写的不错,拿过来就能直接用,感谢他顺便记录下.原始文章地址http://www.jb51.net/article/43498.htm ...
- Deeplab v3+的结构代码简要分析
添加了解码模块来重构精确的图像物体边界.对比如图 deeplab v3+采用了与deeplab v3类似的多尺度带洞卷积结构ASPP,然后通过上采样,以及与不同卷积层相拼接,最终经过卷积以及上采样得到 ...
- shell基础:数值运算与运算符
linux的shell中,变量的类型默认都是字符串型. export将aa声明为环境变量.也可用declare声明.其实就是改变了-x属性 $(()) 最常用.
- webpack打包二进制文件报错
错误示例,如下图所示: 修改webpack的module部分的rules,在其中添加一下代码: { test: /\.woff[0-9]{0,}$/, loader: "url-loader ...
- 在liunx系统里面进行复制文件的时候报错:cp:omitting directiory
在复制的时候执行命令:cp /TEST/test1 /TEST/test2 结果报错:cp:omitting directior 报错原因:test1下面还有文件,不能删除 解决办法:cp -r / ...
- innerText 与 innerHtml的区别
j基本语法类似: innerHTML/innerText ->给除了表单元素的标签赋值内容 document.getElementById("div1").innerHTML ...
- c扩展开发
为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍.IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势. 另外C扩 ...
- SITECORE体验编辑器 - 多站点实施站点解析
SITECORE体验编辑器 - 多站点实施站点解析 我们使用其中一个多站点实现遇到了Sitecore体验编辑器的问题.从内容编辑器中选择并尝试在体验编辑器中打开时属于某个站点的任何页面将始终解析为 ...
- Python - 2. Built-in Collection Data Types
From: http://interactivepython.org/courselib/static/pythonds/Introduction/GettingStartedwithData.htm ...
- c++学习笔记(八)- map
map<key, value>是按key排好序的,key不可以重复. 1. map.lower_bound():按key查找,如果查找的key存在,返回该位置,如果不存在返回大于所查找值的 ...