20155318 《网络攻防》 Exp8 Web基础
20155318 《网络攻防》 Exp8 Web基础
基础问题
- 什么是表单?
- HTML表单用于收集用户输入,用元素定义,包含不同类型的input元素、复选框、单选按钮、提交按钮等等。一个表单有三个基本组成部分:
- 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
- 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
- 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。
- 浏览器可以解析运行什么语言?
- HTML、JavaScript、PHP、ASP、XML、CSS等。
- WebServer支持哪些动态语言?
- JavaScript、ASP、PHP等。
实验过程
Web前端HTML
选择Apache作为web服务器,所以首先需要安装Apache,kali上已经有,开启Apache,键入
service apache2 start
开启之后键入netstat -tupln |grep 80查看80端口的使用情况
输入网址localhost查看apache是否可用,因为上次实验我假冒了校网,所以现在弹出来的是
使用
cd /var/www/html
进入到Apache的工作目录下,vi test20155318.html
新建一个含有表单的html可以看到效果
需要注意的是,这里action里填的是'#',即跳转到当前页面
Web前端javascipt
使用JavaScript来编写一个验证用户名、密码的规则
在刚才的基础上添加javascipt部分
登录时未填写用户名会弹出如下提示框
Web后端Mysql基础
先输入
/etc/init.d/mysql start
指令开启mysql服务输入
mysql -u root -p
,并根据提示输入密码,默认密码为p@ssw0rd,进入MySQL。对密码进行修改:输入
use mysql;
,选择mysql数据库;输入update user set password=PASSWORD("新密码") where user='root';
修改密码;输入flush privileges;
,更新权限;(注意代码中的;
)使用
create database 库名;
建立一个数据库;(注意:数据库的名字不能是数字!!)使用show databases;
查看存在的数据库;使用use 库名;
使用我们创建的数据库使用
create table 表名 (字段设定列表);
建立数据表,数据表是数据库中一个非常重要的对象,一个数据库中可能包含若干个数据表;使用show tables;
查看存在的数据表使用
insert into 表名 values('值1','值2','值3'...);
插入数据,使用select * from 表名;
查询表中的数据在MySQL中增加新用户,使用grant select,insert,update,delete on 数据库.* to 用户名@登录主机(可以是localhost,也可以是远程登录方式的IP) identified by "密码";指令,这句话的意思是将对某数据库的所有表的select,insert,update,delete权限授予某ip登录的某用户
增加新用户后,使用新的用户名和密码进行登录,登录成功,说明成功增加新用户。
Web后端PHP
- 在/var/www/html目录下新建一个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文件的内容
利用PHP和MySQL结合之前编的登录网页进行简单的用户身份认证,这里可以参考老师给的代码编写login.php,修改后的代码如下图所示
注意提交方法与前端保持一致(post/get),注意修改这个部分
将之前编的登录网页的login5318.html代码中form的action属性由#改成login5318.php,即登录后跳转
再在浏览器中输入localhost:80/login5318.html访问自己的登录页面
输入用户名和密码
用户名密码正确,登陆成功
错误时,登陆失败
SQL注入攻击、XSS攻击测试
SQL注入:就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
在用户名输入框中输入' or 1=1#,密码随便输入,是可以登陆成功的。
因为输入的用户名和我们的代码中select语句组合起来变成了select * from users where username='' or 1=1#' and password='',#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件永远成立,所以能够成功登陆
通过SQL注入将用户名和密码保存在数据库中
将
if ($result = $mysqli->query($query_str))
改成if ($result = $mysqli->multi_query($query_str))
实现执行多个sql语句在用户名中输入
';insert into login values('xxx','0000');#
拆开来看就是SELECT * FROM login WHERE username='';
+insert into login values('xxx','0000',);
密码随意首次登录,会显示登录失败
将代码改回去,再次登录时就成功了(数据库被改写)
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
参考大家普遍的一个测试,在用户名输入框中输入 < img src="tu.jpg" /> 读取/var/www/html目录下的图片,
一开始这个图片总是出不来,修改权限也没有用,后来发现是php代码中没有输入框中输入的内容被打印出来的语句
$uname=$_GET['username'];
echo $uname;
实验总结
- 这次实验主要内容是web的前端、后台的设计和数据库的使用以及简单的SQL注入,XSS攻击测试。整体比较简单,特别是XSS攻击感觉很实用。实验过程中遇到的问题,在看了其他同学的博客之后,都有解决~
20155318 《网络攻防》 Exp8 Web基础的更多相关文章
- 《网络攻防》Web基础
20145224陈颢文 <网络攻防>Web基础 基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览 ...
- 20145237《网络攻防》Web基础
基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览器可以解析运行什么语言: 超文本标记语言:HTML: 可扩展 ...
- 20155306 白皎 《网络攻防》 EXP8 Web基础
20155306 白皎 <网络攻防> EXP8 Web基础 一.问题回答 - 什么是表单 表单:一般用来收集用户的信息和反馈意见 表单包括两个部分:一部分是HTML源代码用于描述表单(例如 ...
- 20155321 《网络攻防》 Exp8 Web基础
20155321 <网络攻防> Exp8 Web基础 基础问题回答 什么是表单? 表单是主要负责数据采集功能.主要是以下三个部分构成: 表单标签:包含处理表单数据所用的程序的URL以及数据 ...
- 20155218《网络对抗》Exp8 Web基础
20155218<网络对抗>Exp8 Web基础 1.基础问题回答 1.什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等) ...
- 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础
2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...
- 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基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...
随机推荐
- SQLServer 2008(R2)如何开启数据库的远程连接
SQL Server 2008 R2如何开启数据库的远程连接 by:授客 QQ:1033553122 SQL Server 2008默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的S ...
- FAST特征点检测算法
一 原始方法 简介 在局部特征点检测快速发展的时候,人们对于特征的认识也越来越深入,近几年来许多学者提出了许许多多的特征检测算法及其改进算法,在众多的特征提取算法中,不乏涌现出佼佼者. 从最早期的Mo ...
- LeetCode 题解之Rotate List
1.题目描述 2.题目分析 首先数出链表中的元素个数count,然后对k = k % count 求余数.接着将链表形成一个环,从最后一个元素开始,运动 count - k 步,此时节点的下一个节点 ...
- PHP正则自动验证传入数据
本文出至:新太潮流网络博客 /** * [is_string_regular_type 正则自动验证传入数据] * @E-mial wuliqiang_aa@163.com * @TIME 2017- ...
- SQLServer导数据到Oracle
从SQLServer导数据到Oracle大概有以下几种方法: 使用SSMS的导出数据向导,使用Microsoft ODBC for Oracle或Oracle Provider for OLE DB连 ...
- gitlab配置push -f 关闭
默认路径是/var/opt/gitlab/git-data/repositories/组/库 修改conf 文件 [core] repositoryformatversion = 0 filemode ...
- foreach语句的用法
foreach语句: foreach语句是for语句的特殊简化版本,不能完全取代for语句,但任何foreach语句都可以改写为for语句版本.foreach并不是一个关键字,习惯上将这种特殊的for ...
- 洛谷P1208
#include <iostream>#include <algorithm>#include <cstdio>using namespace std; struc ...
- A “Type Erasure” Pattern that Works in Swift:类型域的转换
新视角:通过函数式编程的范畴理论来看待这个问题会更容易理解: 在低层类型无法很好表达的类型,可以将其转化为高阶类型进行表示. 将协议的实现类型转化为monad类型: 解决将具有关联类型的协议当作类型的 ...
- [游记] Noip 2018
飞雪连天射白鹿, 笑书神侠倚碧鸳 $ 2018/12/14 $ 经历了 \(noip\) 玩完的心态爆炸之后,还是决定稍微写一下游记记录一下\(QAQ\),以免以后就忘了. 然后打算先写个框架之后再慢 ...