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基础的更多相关文章

  1. 20155326《网路对抗》Exp8 WEB基础实践

    20155326<网路对抗>Exp8 WEB基础实践 实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...

  2. 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础

    2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...

  3. 20145236《网络对抗》Exp8 WEB基础实践

    20145236<网路对抗>Exp8 WEB基础实践 一.基础问题回答 什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框. ...

  4. 20145215《网络对抗》Exp8 Web基础

    20145215<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...

  5. 20145208 蔡野 《网络对抗》Exp8 Web基础

    20145208 蔡野 <网络对抗>Exp8 Web基础 本实践的具体要求有: (1).Web前端HTML(1分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POS ...

  6. 20155202《网络对抗》Exp8 Web基础

    20155202<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...

  7. 20155204《网络对抗》Exp8 Web基础

    20155204<网络对抗>Exp8 Web基础 一.基础问题回答 1.什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用C ...

  8. 20155206 Exp8 WEB基础实践

    20155206 Exp8 WEB基础实践 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以 ...

  9. 20155207 EXP8 Web基础

    20155207 EXP8 Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建 ...

随机推荐

  1. Java程序员转行大数据的优势

    大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...

  2. linux 之内存与磁盘

    记录工作中常用操作 1. 新建和增加SWAP分区(都必须用root权限,操作过程应该小心谨慎.) 1)新建分区 .以root身份进入控制台(登录系统),输入 swapoff -a #停止所有的swap ...

  3. VSCode主题自定义(附详细注释及本人主题分享)

    先来一张本人自己配置的主题截图,喜欢的拿去用: 下面说说怎么自定义主题: 1.     Ctrl + ,(Ctrl键 + 逗号键):打开设置,也可以依次点击编辑器左上角 => 文件 => ...

  4. element-ui 表格可编辑添加删除

    <template> <div id="Cold_all"> <div class="Cold_Left"> <el- ...

  5. SSM框架中的Mapper.xml文件中的增、删、改、查等操作

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  6. JavaMaven【四、坐标&构件】

    maven的依赖都是使用坐标找到对应的构件来进行的 坐标 即groupId+artifactId+version 上图第一个红框是本项目的坐标 第二个红框是依赖的项目的坐标 构件 坐标对应的jar包 ...

  7. mysql 添加远程管理用户

    GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;   这一条是添加全权限的用户,用户名和密码 ...

  8. OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发

    OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发 摘要: 记录实验过程中踩到的坑.介绍OPNsense防火墙的安装配置并搭建实验环境,利用msf的模块及ssh进行流量转发(LAN向DMZ ...

  9. arm交叉编译sudo-1.8.6p7

    1.交叉编译 # tar -xvf sudo-1.8.6p7.tar.gz # cd sudo-1.8.6p7/ # mkdir build # ./configure --prefix=/home/ ...

  10. linux学习笔记七

    #文件权限很重要,有些时候删除和新建文件没有权限根本操作不了,linux一切皆是文件,所以必须得了解下权限了. 文件的一般权限 简单的ls -ld 命令就能看到权限,dr-xr-x---补全应该是dr ...