20155204《网络对抗》Exp8 Web基础

20155204《网络对抗》Exp8 Web基础

一、基础问题回答

1.什么是表单

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

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

超文本标记语言:HTML
可扩展标记语言:XML
脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP

3. WebServer支持哪些动态语言

PHP语言、JSP语言。

二、实践总结与体会

这次实验我们主要实践了关于web中SQL的使用,以及一些简单的SQL的攻击方式。这几个攻击方式让我感觉逻辑上的漏洞真的是十分巧妙的,也是非常难以防范的。

三、实践过程记录

1.Web前端HTML

  • 通过apchectl start打开apahce。

  • 在kali浏览器中输入localhost:80,观察Apache正常工作。

2.Web前端:javascipt基础

  • 进入Apache工作目录/var/www/html,新建一个wh.html文件,限制用户登录时必须输入用户名和密码。

3.MySQL基础

  • 这部分主要练习SQL的使用。
  • 输入/etc/init.d/mysql start打开mysql服务,
  • 输入mysql -u root -p,以root身份登录,根据提示输入密码,默认密码为p@ssw0rd,进入MySQL;
  • 用show databases;查看基本信息。(分号一定要加)

  • 创建数据库和新表。命令如下:
create database 库名;
use 库名;
create table tb1 (userid VARCHAR(100),username VARCHAR(45),password VARCHAR(256),enabled VARCHAR(5));

  • 在表中添加内容:
insert into tb1(userid,username,password,enabled) values(1,'20155204','5204',"TRUE");
  • 输入select * from tb1;查看表中现在的信息:

4.Web后端:PHP网页

  • 在/var/www/html目录下编写一个wh1.html(在之前的wh.html上修改),设置将wh1.html的表单提交到whL.php。

  • 编写wh.php,通过php实现对数据库的连接,并显示用户是否能成功登录。

<?php

$uname=($_POST["username"]);
$pwd=($_POST["password"]);

/* echo $uname; */

$query_str="SELECT * FROM tb1 where username='$uname' and password='$pwd';";

/* echo "<br> {$query_str} <br>";*/

$mysqli = new mysqli("127.0.0.1", "wh15204", "5204", "db1");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s
", $mysqli->connect_error);
    exit();
}
echo "connection ok!";
/* Select queries return a resultset */
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();

?>
  • 在登录页面中输入数据库中存有的用户名和密码并点击提交,如果匹配就登录成功。

5.SQL注入

  • 可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
  • 在网页登录的用户名中填写' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5(''),#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆。

  • 或者先在PHP中改语句if ($result = $mysqli->query($query_str))为if ($result = $mysqli->multi_query($query_str)),然后在用户名框中输入';insert into users values('66','5204','20155204',"TRUE");#在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了(登录前将if ($result = $mysqli->query($query_str))语句改回来)。

6.XSS攻击

  • 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

  • 在登录的用户名中输入:5204,读取/var/www/html目录下的图片:

原文地址:https://www.cnblogs.com/20155204wh/p/9045796.html