20165207 Exp8 Web基础
目录
20165207 Exp8 Web基础
本来我以为用上学期学的JavaWeb那一套东西就可以的,后来才发现后台连接数据库用的是PHP
那让我开始学习新知识吧!
0. 环境配置
0.1. apache
输入命令service start apache2,apache可以正常启动
在apache的默认配置文件中查找设置监听端口的文件的位置
修改监听端口,因为这个端口太常用了,不改肯定会出错……
就这样,不加ssl的时候的监听端口被我配成了5207
apache正常工作的测试在编写HTML网页时进行。
0.2. MySQL
在实验指导里面,创建的是一个模式,也就是“CREATE SCHEMA”,其实在上学期学习的数据库课程中,我记得模式和库是有一些区别的。
“模式”也被称为“架构”,实际上应该是某个数据库下的一个特定的命名空间。
我之前使用的是SQLServer学的数据库,在SQLserver里,用户创建了一个数据库之后DBMS会自动为用户创建一个模式名为dbo。
所以实验指导里面的“CREATE SCHEMA”建库的方法引起了我的疑惑
原来,官方文档里面说MySQL里面这两个是同义词
那我就乖乖按照实验指导里面做了。
首先,MySQL服务能正常启动
以root用户的身份登录,查看当前数据库
创建一个库(模式)exp9_5207
哈哈,我的MySQL可以补全单引号啊,改一下,成了
建表,然后show一下看看成功了没有
然后往这个表里面插入一条用户信息
额,看来20个长度的pwd不够啊,查一下password函数的输出长度吧
那就alter改一下表,然后再插入叭
0.3. php
按照实验指导,编写php源文件测试能够正常工作
没问题
0.4. php-mysql编程库
输入实验指导里面搜索库的位置的命令
看来环境基本都没问题,然后开始做实验了。
1. 前台HTML编写静态网页
编写一个html的网页,里面含有表单,但是什么也不做,就是form的属性里面没有关联的action
拖进浏览器里面的效果是这样子的
然后可以往里面加一些东西了
2. 前台HTML中加入JavaScript和css
2.1. 加入css
毕竟要好看一点
上网找了一个说的过去的css,
大概长这样
把人家的一个图片(被我小p了一下要放标题嘛)文件夹和css文件拷贝到我的目录下
添加一句引入css的代码
新的html效果是这样的
好了,不丑了,可以发布到apache了,把images文件夹和那几个css相关的文件夹拷贝到/var/www/html路径下
因为开apache2之后才改的监听端口,所以要把apache重新起一下,然后输入网址:127.0.0.1:5207/exp9_2.html
当然之后还会有exp9_3、4 ……
2.2. 使用JavaScript在前台验证登录
嗯,很蠢,用户名密码都写进前台网页源代码里面了,就,温习一下我的JavaScript
效果是这样子的,嗯
其实下面有两个关闭,一个是个button另一个是个超链接,里面用JavaScript写了关闭页面的语句,在我主机里面试,点这两个都可以关闭,
但是在虚拟机里就不行了……咋点也关不掉
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
有业务逻辑了,表单得有action了,action设置成一个php源代码的名字login.php,表示表单提交之后由这个php文件来处理。
action的方法设成了post因为post方法安全那么一点点。
编写PHP代码,按着实验指导,但是用post的方法编的,就这样
但是出现了问题:
我第一反应是我那边还有一个终端在以root用户的身份操纵数据,喏
先退出试一下,当然是没用的了,最开始在我配置密码的时候我发现,
我的root用户有了新密码居然还是可以敲个回车就进去,我就意识到我这个mysql不简单了
在尝试了各种办法,经历了“一杯茶,一包烟,一行代码看一天之后”,我终于把kali恢复快照然后重启了
让人高兴的是,他终于不报连接的错误了
因为现在是登录失败,
我大概是看了一天代码然后傻了,因为设计的时候让输的是用户id,我现在敲的是用户名
唉,那么下面能否见证奇迹呢?
喔!太感动了,这一天掉的头发值了
4. 测试最简单的SQL注入与XSS攻击
4.1. 最简单的sql注入
学javaweb的时候老师讲过,就是or上一个永真式
而且,我的PHP代码里肯定没有去掉单引号的语句,应该能成功,唯一难点就是单引号
就算试都能试出来
当然我是按着sql语句构造的单引号
没有很大难度
也可以不让最后一个单引号对称,直接把1=1后面的单引号注释掉
4.2. XSS攻击
对于这个的原理我不是特别懂,我理解就是用户在输入框里输入了一串脚本的代码
后台回显出来一个动态的html网页的时候,像这样直接回显前台传来的东西
里面如果是个JavaScript就能被执行。
但是我觉得我的PHP代码没有这个漏洞,因为我只有在登录验证成功的时候才会回显post传来的前台输入,但是如果前台输入的不对,根本就不会登录成功
不成功,就不可能把post来用户名拼接到欢迎语句里
那先试一下输出图片,当然我不可能知道服务器的文件夹里的文件都是啥,只是用一个img标签先验证一下我的分析
当然是不行的,因为登录失败了,不可能给回显
那如果用sql注入配合xss攻击呢,就是先让他登录成功,然后就能打印出来post来的东西了
果然如此
再注个Javascript试试
成了,JavaScript的alert函数被执行了
4.3. 这个XSS该怎么补上
刚才执行alert函数以及回显图片成功的前提都是sql注入成功了,sql注入又依赖于单引号的平衡,所以只要不让在用户名框里面输入单引号,两个问题就都解决了
5. 回答问题
5.1. 什么是表单
表单是用来把前台上用户输入的数据传递给后台的工具,表单(form)内可以有文本框、密码框、复选框、下拉框、按钮等等,依据业务逻辑给后台或者JavaScript传递相应的信息
5.2. 浏览器可以解析什么语言
很多脚本语言都可以,html、javascript……,但是像微软的ps1脚本这种需要powershell这样的专门的环境的脚本语言不可以
5.3. WebServer支持什么动态语言
上学期学了jsp
这次用的php
讲数据库的时候老师提到过asp.net开发动态网页的技术
我只知道这三种
参考:
MySQL手册对于SCHEMA的解释
MySQL中comment用法
PHP获取POST数据
20165207 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,建库.创建用户.修改密码.建 ...
随机推荐
- go语言入门(2)数据类型
1,命名 Go语言中的函数名.变量名.常量名.类型名.语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母.数字或下 ...
- python制作一个简单词云
首先需要安装三个包:# 安装:pip install matplotlib# 安装:pip install jieba# 安装pip install wordcloud 1.制作英文字母的词云 效果图 ...
- nginx反向代理局域网访问外网
.配置内网hosts vim /etc/hosts 添加 host1(能连外网的服务器ip) central.maven.org 2.在host1 服务器上nginx配置 server { ...
- MySQL授权远程用户登录权限
1 举例子,建数据库,然后 赋予用户远程访问的所有权限,最后刷新权限 create database cmf DEFAULT CHARACTER SET utf8; grant all on cmf. ...
- 蓝牙App漏洞系列分析之二CVE-2017-0639
蓝牙App漏洞系列分析之二CVE-2017-0639 0x01 漏洞简介 Android本月的安全公告,修复了我们发现的另一个蓝牙App信息泄露漏洞,该漏洞允许攻击者获取 bluetooth用户所拥有 ...
- Pysnooper 一款大受欢迎的Debug模块
Github地址 安装 PIP pip install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number) ...
- getAttribute和getParameter的简单区别
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...
- 通过WSL使用rsync同步本文件
1.安装WLS 主要参考Windows10上使用Linux子系统(WSL)这篇文章进行安装,不要通过lxrun /install /y去安装,这种方法安装貌似没有wsl命令. 先把win 10 版本升 ...
- gulp connect.static is not a function
npm install --save serve-static var serveStatic = require('serve-static');
- shutdown immediate 持久无法关闭数据库之解决方案
问题引出:测试环境,进行oralce的shutdown immediate,等待时间很长,长的无法等待 ORACLE shutdown 过程: 1.shutdown normal(正常关闭方式):阻止 ...