1.本实践的具体内容:

(1).Web前端HTML(0.5分)

  • 输入命令apachectl start打开apahce,并查看端口号,确认apache开启:

  • 在kali浏览器中输入localhost:80,如图所示,说明我们Apache正常工作:

  • 进入Apache工作目录/var/www/html,新建一个test1.html文件,编写一个含有表单能实现输入用户名、密码实现登录的html如下所示:

<html>
<head>
<title>5215login</title>
</head>
<body> <form method = "post" action="action.php" >
USER:<input type="text" name="user"> <p>
PASSWORD:<input type="password" name="pw"><p>
<input type="submit" value="SUBMIT">
</form> </body>
</html>

method属性分Post和Get两种,其主要区别有以下几方面:

  • Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据
  • Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器会将URL记录到日志文件中,然后存储在某个地方,这样就可能会泄露信息。Post的所有操作对用户来说都是不可见的。
  • Get传输的数据量小,Post的传输量大,所以在上传文件只能使用Post;

在浏览器中打开如下所示:

(2).Web前端javascipt(0.5分)

  • 在原有代码的基础上,可以添加一段JavaScript代码,以完成对用户名和密码是否为空的判断。修改后的如下所示:

  • 在浏览器中打开如下所示:

(3).Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表(0.5分)

  • 输入/etc/init.d/mysql start开启MySQL服务

  • 输入mysql -u root -p使用root权限进入,默认的密码是password:

  • 输入update user set password=PASSWORD("新密码") where user='root';,修改密码;输入flush privileges;,更新权限:

  • 输入quit/exit退出数据库,使用新的密码登录:

  • 使用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登录的某用户:

  • 增加新用户后,使用新的用户名和密码进行登录:

登录成功!

(4).Web后端:编写PHP网页,连接数据库,进行用户认证(1分)

  • 在/var/www/html目录下新建一个PHP文件,简单了解一下它的一些语法:
<?php

$user= $_POST["user"];
$psw= $_POST["pw"]; echo "Welcome!";
echo $user;
?>

  • 在浏览器打开一个127.0.0.1/test1.html,不输入用户名和密码,则会出现如下提示:

  • 利用PHP和MySQL,结合之前创建的数据库和编写的登录网页进行登录身份认证,修改后的php代码如下:
<?php
$uname=$_POST["username"];
$pwd=$_POST["password"];
echo $uname;
$query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "xy", "0428", "XY"); /* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "Connection succeeded!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> Welcome login :{$uname} <br> ";
}
else {
echo "<br> login failed!!!! <br> " ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>

  • 在浏览器输入127.0.0.1/test3.html访问自己的登录界面。

  • 输入用户名和密码进行认证,成功登录如下图所示:

  • 失败如下所示:

(5).最简单的SQL注入,XSS攻击测试(1分)

A. SQL注入

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。SQL注入攻击是黑客对数据库进行攻击的常用手段之一。

  • 在用户名输入框输入' or 1=1#,密码任意输入:

  • 登录成功!

原理:因为输入的用户名和我们的代码中select语句组合起来变成了select * from users where username=' 'or 1=1# ' and password=' ',#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件永远成立,所以不管密码是否输入正确,都能够成功登陆。

B. XSS攻击

XSS攻击,即跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

  • 将一张图片放在/var/www/html目录下,在用户名输入框输入<img src="1.jpg" />,密码随意,就可以读取图片啦:

2.1.基础问题回答

(1)什么是表单

  • 答:表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签,这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。表单域,包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。表单按钮,包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。

(2)浏览器可以解析运行什么语言

  • 答:浏览器可以解析运行超文本标记语言:HTML,可扩展标记语言:XML,以及脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。

    (3)WebServer支持哪些动态语言
  • 答:WebServer支持JavaScript、PHP、ASP等脚本语言。

2.2.实践总结与体会

2.2.1 遇到的问题:

  • 我在重新启动数据库时出现了下面的情况:

  • 解决方案:解决,我在网上找到了一个解决方案,只需输入sudo /etc/init.d/mysql restart 命令重启服务器,就解决了问题。

实践体会

这次的实践用到了很多以前学习的知识,比如刘念老师教的网络编程方面的内容,还有SQL注入攻击,我记得刘念老师也提到过。以前学过的知识在现在的学习中得到了应用,一方面让我意识到以前学的很多东西其实我已经开始遗忘了,另一方面也在提醒我,没有什么学习是没有意义的,我们应当以同样认真的态度面对每一次的学习。

网络对抗技术 2017-2018-2 20152515 Exp 8 Web基础的更多相关文章

  1. 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础

    20145203盖泽双 <网络对抗技术> MAL_逆向与Bof基础 实践目标 (1)我们要通过修改程序代码,使得程序运行其自身中本不该运行的代码片段. (2)在这里,我们有一个名为2014 ...

  2. 20145234黄斐《网络对抗技术》实验一,逆向及Bof基础实践

    实践内容 本次实践的对象是一个名为hf20145234的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段, ...

  3. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  4. 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践

    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...

  5. 2018-2019-2 网络对抗技术 20165336 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165336 Exp2 后门原理与实践 1.基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 下载自己不熟悉的软件时含有病毒. 网络钓鱼, ...

  6. 20155207 《网络对抗技术》EXP3 免杀原理与实践

    20155207 <网络对抗技术>EXP3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? - 根据特征码进行检测(静态) - 启发式(模糊特征点.行为 ) - 根据行为进行检 ...

  7. 2018-2019-2 20165209 《网络对抗技术》Exp4:恶意代码分析

    2018-2019-2 20165209 <网络对抗技术>Exp4:恶意代码分析 1 基础问题回答和实验内容 1.1基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监 ...

  8. 20145336张子扬 《网络对抗技术》 PC平台逆向破解

    #20145336张子扬 <网络对抗技术> PC平台逆向破解 ##Shellcode注入 **基础知识** Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对 ...

  9. 20145333 《网络对抗技术》 PC平台逆向破解

    20145333 <网络对抗技术> PC平台逆向破解 20145333 <网络对抗技术> PC平台逆向破解 Shellcode注入 基础知识 Shellcode实际是一段代码, ...

随机推荐

  1. SD从零开始33-37

    [原创]SD从零开始33 Billing简介 Billing在SD流程链中的集成: Billing document表征SD流程链中的最后功能: Billing document在R/3系统的不同区域 ...

  2. 个人理解的Lambda表达式的演化过程

    之前在组内进行过相关分享,为防止以后再单独整理,故在此将自己的PPT内容存放下. 所以,多数代码都是以图片的方式展现. 委托 什么是委托? 定义:委托是方法的抽象,它存储的就是一系列具有相同签名和返回 ...

  3. webpack中mainifest.js vendor.js app.js 三者的区别

    场景: 大家在利用构建工具进行应用最后的打包过程中,我们希望做到的是将业务代码和第三方引用模块代码分开打包. 因为第三方引用模块代码通常很大,而且在不引入新的模块之前基本上是不会变动的.所以我们需要将 ...

  4. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓“工欲善其事,必先利其器”.Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提 ...

  5. 【Redis】Redis学习(一) Redis初步入门

    一.Redis基础知识 1.1 Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,h ...

  6. TFS命令行操作

    前言 本文主要介绍如何通过TFS(Team Foundation Server)命令行强制解锁(UnDo)项目成员对项目文件的占用. 正文 在多人同时开发项目的时候,如果遇到项目组成员独占签出文件后未 ...

  7. Mongodb集群与分片 2

    前面我们介绍了简单的集群配置实例.在简单实例中,虽然MongoDB auto-Sharding解决了海量存储问题,和动态扩容问题,但是离我们在真实环境下面所需要的高可靠性和高可用性还有一定的距离. 下 ...

  8. 使用 PowerShell 创建 Azure VM 的自定义映像

    自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己. 自定义映像可用于启动配置,例如预加载应用程序.应用程序配置和其他 OS 配置. 在本教程中,你将创建自己的 Azure 虚拟机自定义 ...

  9. sql server 2008 身份验证失败 18456

    双击打开后加上  ;-m  然后以管理员方式  打开 SQLSERVER 2008  就可以已window身份登录  不过还没有完 右键  属性  =>安全性 更改为 sql server 和 ...

  10. Vue.js Is Good, but Is It Better Than Angular or React?

    Vue.js is a JavaScript library for building web interfaces. Combining  with some other tools It also ...