20165207 Exp8 Web基础 20165207 Exp8 Web基础 0. 环境配置 1. 前台HTML编写静态网页 2. 前台HTML中加入JavaScript和css 3. 后台php连接数据库通过数据操作实现登录等业务逻辑 4. 测试最简单的SQL注入与XSS攻击 5. 回答问题

本来我以为用上学期学的JavaWeb那一套东西就可以的,后来才发现后台连接数据库用的是PHP
那让我开始学习新知识吧!


0. 环境配置

0.1. apache

输入命令service start apache2,apache可以正常启动
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
在apache的默认配置文件中查找设置监听端口的文件的位置
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
修改监听端口,因为这个端口太常用了,不改肯定会出错……
就这样,不加ssl的时候的监听端口被我配成了5207
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
apache正常工作的测试在编写HTML网页时进行。

0.2. MySQL

在实验指导里面,创建的是一个模式,也就是“CREATE SCHEMA”,其实在上学期学习的数据库课程中,我记得模式和库是有一些区别的。
“模式”也被称为“架构”,实际上应该是某个数据库下的一个特定的命名空间。
我之前使用的是SQLServer学的数据库,在SQLserver里,用户创建了一个数据库之后DBMS会自动为用户创建一个模式名为dbo。
所以实验指导里面的“CREATE SCHEMA”建库的方法引起了我的疑惑
原来,官方文档里面说MySQL里面这两个是同义词
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
那我就乖乖按照实验指导里面做了。
首先,MySQL服务能正常启动
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
以root用户的身份登录,查看当前数据库
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
创建一个库(模式)exp9_5207
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
哈哈,我的MySQL可以补全单引号啊,改一下,成了
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
建表,然后show一下看看成功了没有
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
然后往这个表里面插入一条用户信息
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
额,看来20个长度的pwd不够啊,查一下password函数的输出长度吧
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
那就alter改一下表,然后再插入叭
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题

0.3. php

按照实验指导,编写php源文件测试能够正常工作
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
没问题

0.4. php-mysql编程库

输入实验指导里面搜索库的位置的命令
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
看来环境基本都没问题,然后开始做实验了。

1. 前台HTML编写静态网页

编写一个html的网页,里面含有表单,但是什么也不做,就是form的属性里面没有关联的action
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
拖进浏览器里面的效果是这样子的
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
然后可以往里面加一些东西了

2. 前台HTML中加入JavaScript和css

2.1. 加入css

毕竟要好看一点
上网找了一个说的过去的css,
大概长这样
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
把人家的一个图片(被我小p了一下要放标题嘛)文件夹和css文件拷贝到我的目录下
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
添加一句引入css的代码
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
新的html效果是这样的
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
好了,不丑了,可以发布到apache了,把images文件夹和那几个css相关的文件夹拷贝到/var/www/html路径下
因为开apache2之后才改的监听端口,所以要把apache重新起一下,然后输入网址:127.0.0.1:5207/exp9_2.html
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
当然之后还会有exp9_3、4 ……

2.2. 使用JavaScript在前台验证登录

嗯,很蠢,用户名密码都写进前台网页源代码里面了,就,温习一下我的JavaScript
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
效果是这样子的,嗯
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
其实下面有两个关闭,一个是个button另一个是个超链接,里面用JavaScript写了关闭页面的语句,在我主机里面试,点这两个都可以关闭,
但是在虚拟机里就不行了……咋点也关不掉

3. 后台php连接数据库通过数据操作实现登录等业务逻辑

有业务逻辑了,表单得有action了,action设置成一个php源代码的名字login.php,表示表单提交之后由这个php文件来处理。
action的方法设成了post因为post方法安全那么一点点。
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
编写PHP代码,按着实验指导,但是用post的方法编的,就这样
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
但是出现了问题:
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
我第一反应是我那边还有一个终端在以root用户的身份操纵数据,喏
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
先退出试一下,当然是没用的了,最开始在我配置密码的时候我发现,
我的root用户有了新密码居然还是可以敲个回车就进去,我就意识到我这个mysql不简单了
在尝试了各种办法,经历了“一杯茶,一包烟,一行代码看一天之后”,我终于把kali恢复快照然后重启了
让人高兴的是,他终于不报连接的错误了
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
因为现在是登录失败,
我大概是看了一天代码然后傻了,因为设计的时候让输的是用户id,我现在敲的是用户名
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
唉,那么下面能否见证奇迹呢?
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
喔!太感动了,这一天掉的头发值了

4. 测试最简单的SQL注入与XSS攻击

4.1. 最简单的sql注入

学javaweb的时候老师讲过,就是or上一个永真式
而且,我的PHP代码里肯定没有去掉单引号的语句,应该能成功,唯一难点就是单引号
就算试都能试出来
当然我是按着sql语句构造的单引号
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
没有很大难度
也可以不让最后一个单引号对称,直接把1=1后面的单引号注释掉
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题

4.2. XSS攻击

对于这个的原理我不是特别懂,我理解就是用户在输入框里输入了一串脚本的代码
后台回显出来一个动态的html网页的时候,像这样直接回显前台传来的东西
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
里面如果是个JavaScript就能被执行。
但是我觉得我的PHP代码没有这个漏洞,因为我只有在登录验证成功的时候才会回显post传来的前台输入,但是如果前台输入的不对,根本就不会登录成功
不成功,就不可能把post来用户名拼接到欢迎语句里
那先试一下输出图片,当然我不可能知道服务器的文件夹里的文件都是啥,只是用一个img标签先验证一下我的分析
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
当然是不行的,因为登录失败了,不可能给回显
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
那如果用sql注入配合xss攻击呢,就是先让他登录成功,然后就能打印出来post来的东西了
果然如此
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
再注个Javascript试试
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题
成了,JavaScript的alert函数被执行了
20165207 Exp8 Web基础
20165207 Exp8 Web基础
0. 环境配置
1. 前台HTML编写静态网页
2. 前台HTML中加入JavaScript和css
3. 后台php连接数据库通过数据操作实现登录等业务逻辑
4. 测试最简单的SQL注入与XSS攻击
5. 回答问题

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数据