首页 > 其他分享 > Exp8 Web安全

Exp8 Web安全

时间:2023-05-24 22:55:15浏览次数:43  
标签:Web Exp8 用户 安全 SQL var 输入 注入

一、基础问题回答

1.什么是表单

表单是网页上的一种交互元素,用于收集用户输入的数据。它可以包含多个输入字段,如文本框、下拉框、单选框、复选框等,还可以包含提交按钮和重置按钮。用户填写完表单后,可以将表单数据提交到服务器进行处理。在前端开发中,我们通常使用HTML和CSS来创建表单,并使用JavaScript来实现表单的交互和验证功能。

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

浏览器可以解析并运行多种语言,包括HTML、CSS、JavaScript、XML、JSON等。HTML用于定义网页内容,CSS用于定义网页样式,JavaScript用于实现网页交互和动态效果。XML和JSON用于数据交换和格式化。除此之外,浏览器还可以解析一些插件和扩展,如Flash、Java等。

3.WebServer支持哪些动态语言

WebServer支持的动态语言有很多种,包括但不限于PHP、Python、Ruby、Java、ASP.NET等。这些动态语言可以与Web服务器进行交互,动态生成网页内容,并将数据存储到数据库中。不同的动态语言有不同的优势和适用场景。例如,PHP是一个流行的服务器端脚本语言,具有简单易学、开发效率高等优点,适用于快速开发小型网站和Web应用;Python是一种高级编程语言,具有简单易读、可维护性好等优点,适用于数据处理、机器学习等领域;Java是一种面向对象的编程语言,具有跨平台、安全性高等优点,适用于大型企业级应用开发等领域。

4.防范注入攻击的方法有哪些

防范注入攻击是Web应用程序开发中非常重要的一项工作。注入攻击是指攻击者通过注入恶意代码来执行非法操作的一种攻击方式。其中,SQL注入是最常见的注入攻击之一。为了防范注入攻击,我们可以采取以下措施:

  • 使用参数化查询:在SQL语句中使用参数占位符,避免将用户输入的数据直接拼接到SQL语句中,从而防止SQL注入攻击。
  • 过滤用户输入:对用户输入的数据进行过滤,只允许特定的字符和格式,如数字、字母、下划线等,避免输入非法字符。
  • 使用ORM框架:ORM框架可以将数据库操作抽象成对象操作,避免手动拼接SQL语句,从而减少SQL注入的风险。
  • 使用安全函数:对于一些敏感操作,如文件操作、系统调用等,应该使用安全函数,避免用户输入的数据被当作命令执行。
  • 对用户输入进行验证:对用户输入的数据进行验证,确保其符合预期的格式和内容,如邮箱地址、手机号码等。如果用户输入的数据不符合要求,应该提示用户重新输入。
  • 使用安全编码:在开发过程中,应该使用安全编码技巧,避免代码中存在安全漏洞,如缓冲区溢出、路径遍历等。同时,在部署Web应用程序时,需要对服务器进行安全加固,如限制文件上传、关闭不必要的服务端口等,以提高Web应用程序的安全性。

二、实践要求

1.Web前端HTML

能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

2.Web前端javascipt

(1)、理解JavaScript的基本功能,理解DOM。
(2)、在1的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”。
(3)、尝试注入攻击:利用回显用户名注入HTML及JavaScript。

3.Web后端MySQL基础

正常安装、启动MySQL,建库、创建用户、修改密码、建表。

4.Web后端编写PHP网页

连接数据库,进行用户认证。

5.最简单的SQL注入,XSS攻击测试

6.选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例

三、实践过程

1.Web前端HTML

  • kali默认已安装Apache,直接使用 service apache2 start命令打开Apache服务即可。
  • 使用service apache2 status 查看服务情况

此时在浏览器输入 127.0.0.1,如果可以打开Apache的默认网页,则表示开启成功!

使用 cd /var/www/html进入Apache目录下,新建一个简单的含有表单的html文件 form.html,内容如下:

代码:

<html>
<head>
<title>20201203</title>
<meta http-equiv="Content-Type" content="test/html; charset=utf-8" />
</head>
<body>
<h2>Login</h2>
<center>
<form action="myindex" method="get" name="form_login">
<input placeholder="username" name="user" class="user" type="text" onfocus="if (th is.value=='Your name') this.value='';" />
<br>
</br>
<input placeholder="Password" name="Password" class="pass" type="password" onf ocus="if (this.value=='Your password') this.value='';"/>
<br>
</br>
<input type="submit" value="Login" onClick="return validateLogin()"/>
</form>
</center>
</script>
</body>
</html>

在网页中输入/var/www/html/4304.html,显示一个网页表单

2.Web前端javascipt

添加一段JavaScript代码,以完成对用户是否填写账号和密码的判断,在用户点击登陆按钮后回显“欢迎+输入的用户名”
在后添加如下代码:

<!--//main-->
<script language="javascript">
function validateLogin(){
var sUserName = document.form_login.user.value;
var sPassword = document.form_login.Password.value;
if ((sUserName =="") || (sUserName=="Your name")){
alert("need name!");
return false ;
}
if ((sPassword =="") || (sPassword=="Your password")){
alert("need password!");
return false ;
}
}

产生效果如下:

编写登陆成功界面
编写登录成功后跳转的界面,主要任务是获取用户名参数并显示出来

在该目录下创建一个myindex文件,文件内容为:

<html>
<head>
<title>myindex</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<script language="JavaScript" type="text/javascript">
var searchStr = location.search;
searchStr = searchStr.substr(1);
var searchs = searchStr.split("&");
var username = searchs[0].split("=");
document.write("欢迎您:"+username[1]);
</script>
<body>
<h2 align="center">myindex</h2>
</body>
</html>

效果为:

尝试注入攻击
更新代码:

<html>
<head>
<title>myindex</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2 align="center">myindex</h2>
<h3 id="n"></h3>
<script language="JavaScript" type="text/javascript">
function myname() {
var searchStr = location.search;
searchStr = searchStr.substr(1);
var searchs = searchStr.split("&");
var username = searchs[0].split("=");
return username[1];
}
document.getElementById("n").innerHTML = decodeURIComponent(myname());
</script>
</body>
<a id='n'></a>
</html>

注入 html

<h1>hellolz<h1>

注入 Javascript

<script language="JavaScript" type="text/javascript">alert("人类命运共同体");</script>

3.Web后端MySQL基础

  • 输入 service mysql start开启MySQL服务
  • 输入 mysql -u root -p使用root权限进入,默认的密码是 password

  • show databases; 命令查看数据库基本信息
  • use mysql; 选择使用mysql这个数据库
  • select user, password, host from user; 查看当前用户信息
  • ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; 修改密码
  • flush privileges; 更新权限
  • exit 退出数据库,使用新的密码登录

  • create database ly; 建立数据库
  • show databases; 查看存在的数据库
  • use 数据库名称; 使用我们创建的数据库
  • create table login (username VARCHAR(20),password VARCHAR(20)); 建立数据库表,并设置字段基本信息。这里使用varchar类型而不是char类型,原因为char类型指定大小后会预分配固定大小,不管是否使用空间都被占用;varchar类型则根据实际应用的大小占据空间。
  • show tables; 查看表信息
  • insert into login values('[email protected]','20201317'); 插入数据
  • select * from 表名; 查询表中的数据
  • GRANT select,insert,update,delete ON ly.* TO ly@localhost identified by "20201203";

4.Web后端编写网页

安装php
sudo apt-get install php

在/var/www/html目录下新建一个PHP测试文件phptest.php
vim phptest.php

代码:

<?php
echo	"Hello	word!	This	is lz	test	page!";
?>

输入 127.0.0.1/phptest.php

成功执行了 PHP 代码
连接数据库,进行用户认证
写 test.php 代码:

<?php
$uname=$_POST["user"];
$pwd=$_POST["Password"];
echo $uname;
$query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "ly", "20201203", "ly");
$query_str1="use ly;";
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str1))
echo"<br>Success into database!";
echo$uname;
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> Welcome login Mr/Mrs:{$uname}:<br> ";
}
else {
echo "<br> login failed!!!! <br> " ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>

将之前的 form.html 中的中的 action 设为 test.php,method改为 POST
登录 127.0.0.1/form.html 查看

密码错误时:

5.最简单的SQL注入,XSS攻击测试

5.1 SQL注入

输入' or 1=1#,密码随机

5.2XSS攻击测试

在用户名输入,密码随机

6.选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例

6.1 安装Webgoat

参考安装链接:

6.2 打开Webgoat

在浏览器打开:

6.3 注册用户

6.4 SQL注入

SQL Injection (intro) 第 10 页

操作过程如下:

6.5 XSS攻击

选择课程:

由于 XSS 最终是要浏览器渲染的,因此,可以先按下 Purchase,看看哪个输入是会回显的

从上图可知,电话号码那个输入框的输入参数是会回显的在这个输入框中尝试输入
<script>alert('20204304lz')</script>

6.6 CSRF攻击

选择课程如下:

这个任务是在保持当前页面(页面 1)打开的情况下,在新页面(页面 2)上创建以 csrf-为前缀的新用户,并以该新用户登录。然后在页面 1 上点击下图这个solved 按钮。

四、实践感想与体会

当我完成了这个实验后,我对Web开发和Web安全有了更深入的理解。以下是我在这个实验中所学到的一些体会和感想:
Web前端HTML和JavaScript的基础知识非常重要。在编写Web应用程序时,我们需要了解如何使用HTML和JavaScript来构建用户界面和实现交互功能。数据库的基本操作是Web后端开发的重要部分。在这个实验中,我学会了如何使用MySQL来创建数据库、用户和表格,并通过PHP代码来访问和操作这些数据。安全漏洞是Web开发中必须重视的问题。在这个实验中,我学会了如何测试我的Web应用程序,以发现并修复潜在的安全漏洞。使用Webgoat或类似平台是了解和学习Web安全的好方法。这些平台提供了许多实际的漏洞和攻击场景,可以帮助我们更好地理解Web安全的相关概念和技术。
总的来说,这个实验让我更深入地了解了Web开发和Web安全,让我更有信心去设计和开发更加安全的Web应用程序。我相信这些知识和技能在我今后的学习和工作中将会非常有用。同时,我也意识到Web安全是一个永恒的话题,我们需要不断学习和更新我们的知识,以应对不断变化的安全威胁。

标签:Web,Exp8,用户,安全,SQL,var,输入,注入
From: https://www.cnblogs.com/1314liyang/p/17429791.html

相关文章

  • 小白iwebsec
    文件包含漏洞上机练习一、实训目的掌握本地文件包含漏洞、本地文件包含绕过、Session文件包含、日志文件包含二、实验环境运行vmwareworkstation10以上,安装kali和Linux的操作系统。三、实验要求在虚拟机下完成以下操作,并写出实验步骤。四、实验内容将耙机IP设置为:192.168.x.100和1......
  • 使用命令清除vSphere Web界面中无法删除的分区​
    在vSpherevSAN的项目中,要求添加到磁盘组的磁盘是未使用的。如果磁盘已经使用过,可以在vSphereClient的界面中清除磁盘分区,将磁盘分区清除后再添加到磁盘组中。如图1所示,在vSphereClient中,在导航窗格中选择主机,在右侧“配置→存储→存储设备”选项中,在“数据存储”列表中查找显示......
  • 网络安全基础
       ......
  • Java Web三大组件之Filter过滤器
    JavaWeb三大组件(Servlet、Filter、Listener)1、Filter过滤器概念生活中的过滤器:净水器,空气净化器,大山里的土匪等JavaWeb中的过滤器:当浏览器访问服务器资源时,过滤器就会拦截浏览器发过来的请求,实现一些特别的功能作用:一般用于完成通用的操作,如登录验证,身份验证,统一字符编码和敏感字......
  • Exp8 Web安全 实验报告—20201229赵斌
    一、实践目标(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名......
  • 法制文化主题沙龙——“初探智能网联汽车发展与安全”
    为积极探索智能网联汽车发展与安全有关法律前沿问题,不断推动优化新兴科技产业领域良好的法治环境,2023年5月19日上午,法制总队举办了“初探智能网联汽车发展与安全”法制文化主题沙龙,邀请业界、学界、实务界等部门,共同探讨我国智能网联汽车的发展情况与立法问题。市局党委委员、副局......
  • Oracle数据安全技术
    一:概述   Oracle是Oracle公司开发的一种面向网络计算机并支持对象-关系模型的数据库产品。它是一高级及结构化查询语言为基础的大型关系数据库。是目前最流行的客户/服务器体系结构的数据库之一。   Oracle之所以备受用户喜爱,是因为它具有以下突出的特点。   <1>支......
  • Appium自动化(8):混合应用webview元素识别
    混合应用:混合应用又称为HybridApp,它是原生应用和Web应用的结合体,采用了原生应用的一部分、Web应用的一部分(WebView),所以部分必须在设备上运行、部分必须在Web上运行。WebView:WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面。它使用的内核是webkit引擎,4......
  • 20、Web服务示例
    如下是main.rs文件内容://src\main.rsusehello::ThreadPool;usestd::thread;usestd::time::Duration;usestd::fs;usestd::io::prelude::*;usestd::net::TcpStream;usestd::net::TcpListener;fnmain(){letlistener=TcpListener::bind("127.0.0.1:78......
  • 功能安全、预期功能安全与信息安全的差异与协同
    今天的汽车行业面临最大的挑战之一,就是从过去基于硬件的车辆过渡到软件定义汽车的时代。当软件成为造车行业发展的主要领域,越来越多的OEM和零部件供应商逐步转型为软件公司。汽车也单纯的从出行工具变成了移动的计算机,汽车的开发越来越像在四个轮子上去开发车载电脑。随着智能网......