Web前端
<form name = "" method = "" action = "" >表单属性</form>get:获得,静态;post:发送,动态,封装在数据包内进行传送,更加安全<input type = "" name = "" value = ""><input type = "text" name = "" value = "" size = "" maxlength = ""><input type = "password" name = "" ><textarea name = "" rows = "" cols = "">输入初始显示的内容</textarea><input type = "button" value = "按钮上显示的的文字">Web后端
service apache2 startapt-get install phpapt-get install php-mysql php-mysqlilocate mysql.so/locate mysqli.so‘ or 1=1#中#相当于注释符,把后面的内容都注释掉,1=1是永真式,条件永远成立,和代码中select语句组合后变成select * from user_login where username=‘‘ or 1=1# ‘ and password=‘‘,不管密码是否输入正确,都能够成功登录数据库
/etc/init.d/mysql start/etc/init.d/mysqld restartmysql -u [用户名] -pupdate user set password=PASSWORD("[新密码]") where user=‘[用户名]‘show databases;show tables;create database [库名];create table [表名](username VARCHAR(n),password VARCHAR(n));use [数据库名]insert into [表名] values(‘[表用户名]‘,‘[表密码]‘);exit/quitservice apache2 start开启Apache服务

netstat -aptn
cd /var/www/html进入该目录,并vi 5217_form_1.html编写一个简单的含表单的网页

file:///var/www/html/5217_form_1.html
action:参数指定了后台服务器处理这个表单的脚本,或者简单理解为点击提交后显示的页面
method:参数如果是GET,后面的输入值会显示在URL中提交;如果是POST则封装到数据中提交
onsubmit:是一个事件,提交时触发。
5217_form_1.html基础上,可以添加一段JavaScript代码,以完成对用户是否填写邮箱和密码的判断。修改后的5217_form_2.html如下所示:
file:///var/www/html/5217_form_2.html

正常安装、启动MySQL、修改密码
/etc/init.d/mysql start
mysql -u root -p,默认密码是password,输入后回车即可成功登录
show databases;(注意需要后面加;)查看数据库
use mysql;使用名为mysql的这一数据库,该数据库表存储的为mysql的配置数据
update user set password=PASSWORD("20175217") where user=‘root‘;更改用户root的密码为20175217
select user, password, host from user;查看当前用户信息
flush privileges;更新权限
exit,再使用新密码登录试试:mysql -u root -p
建库、创建用户、建表
create database wyf;新建一个名为wyf的数据库
show databases;,就可以看到这个新建的数据库了
use 数据库名称;使用我们创建的数据库
create table user_login (useremail VARCHAR(20),password VARCHAR(20));创建一个名为user_login的表,表中有类型为VARCHAR(20)的两个字段useremail和password
show tables;查看表信息,可以看到我们刚刚创建的表格user_login
insert into user_login values(‘20175217@qq.com‘,‘20175217‘);向表中useremail和password插入数据,即设置登录的email为20175217@qq.com,登录密码为20175217
select * from user_login;查询表user_login中的所有数据
grant select,insert,update,delete on wyf.* to wuyifan@localhost identified by "20175217";将对某数据库的所有表的select,insert,update,delete权限授予当前主机localhost登录的用户wuyifan,登录密码是20175217
exit退出,然后使用新的用户名和密码进行登录,登录成功说明成功增加新用户
sudo apt-get install php安装最新版PHP
phptest.php,测试一下<?php
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is my php test page!<br>";
?>
localhost:80/phptest.php?a=/etc/passwd,可看到/etc/passwd文件的内容
5217_form_2.html中的action设为login.php,表单中数据将被送入login.php进行处理
/var/www/html/login.php,尝试获取表单数据,该php的参数是从前面5217_form_2.html提交的表单获取的数据
192.168.228.128/5217_form_2.html访问自己的登录界面,输入登录的账号与密码
login.php将查询数据库wyf中表格user_login中的数据,并与此时输入的进行对比,如果相同,通过身份认证,不同则登录失败


SQL注入
email类型,表单中无法输入非email格式的数据通过,所以修改5217_form_2.html中的用户登录账号为text类型
‘ or 1=1#,密码任意输入,可登陆成功

原理:
select * from user_login where username=‘‘ or 1=1#‘ and password=‘‘,#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件永远成立,所以不管密码是否输入正确,都能够成功登陆XSS攻击
/var/www/html目录下,在用户名输入框输入<img src="20175217.jpg" />,密码随意,就可以读取图片了

1.什么是表单
get或者post方法都可以获得表单的数据,两者主要区别在于以下几方面:Get
Post
2.浏览器可以解析运行什么语言
3.WebServer支持哪些动态语言
ASP
PHP
JAVA SCRIPT
问题1:在创建数据库时出现错误

解决1:发现是自己少打了个;,加上就好了

问题2:在测试PHP时,无法登入网页

解决2:使用PHP需要开启Apache和MySQL,我当时没有开,开启后就好了

? ? ? ?这次实验做的是实现前端、后台和数据库的连接与数据传输,通过参考课代表和学姐的博客完成。因为之前学过一点web,所以理解起来不算困难,但实践起来还是遇到了一些小问题,而且对PHP代码不是很熟悉,操作起来也遇到了一些问题。通过本次实验,我掌握了前端、后台和数据库的基本操作方法和一些简单的攻击方法,加深了我对web安全知识的理解。在今后的学习中我会继续努力,学习更多知识。
2019-2020-2 网络对抗技术 20175217 Exp 8 Web基础
原文:https://www.cnblogs.com/wyf20175217/p/12899937.html