zoukankan      html  css  js  c++  java
  • 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数据

  • 相关阅读:
    4 行代码实现将文件读到 C++ string
    Adaptive AUTOSAR 学习笔记 15
    Adaptive AUTOSAR 学习笔记 14
    Adaptive AUTOSAR 学习笔记 13
    Adaptive AUTOSAR 学习笔记 12
    Adaptive AUTOSAR 学习笔记 10
    Adaptive AUTOSAR 学习笔记 9
    Linux 彻底卸载从源码安装的 boost 库
    Adaptive AUTOSAR 学习笔记 8
    grep awk sed 正则表达式,只把匹配的内容(不是整个匹配行)提取出来,保存到 shell 脚本变量
  • 原文地址:https://www.cnblogs.com/ltl0501/p/10888213.html
Copyright © 2011-2022 走看看