20155330 《网络对抗》 Exp8 Web基础

实验问题回答

  1. 什么是表单

    • 表单可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁。

    • 一个表单有三个基本组成部分

      • 表单标签

      • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等

      • 表单按钮:包括提交按钮、复位按钮和一般按钮.

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

    • 超文本标记语言:HTML
    • 可扩展标记语言:XML
    • 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
  3. WebServer支持哪些动态语言

    • PHP语言、JSP语言。

实验总结与体会

这次实验过程中遇到了不少问题,但都解决了,感觉很开心,特别是最后的图片显示出来了。通过实验也感受到对MySQL数据库的使用比较不熟练,经常会忘记在命令后面加分号啊什么的。从这次实验也初步了解了一些web攻击的基础知识,在web开发时要注意避免常见的攻击手段。

实践过程记录

(一)环境配置

  • 使用apache -v查看本机安装Apache的版本状态。

  • 使用netstat -aptn查看端口占用情况。

  • 使用vi /etc/apache2/ports.conf对apache所要占用的端口进行设置,这里把侦听端口改为了自己的学号5330。



  • 通过systemctl start apache2开启Apach。

  • 再次使用netstat -aptn查看端口占用(在这之前kill掉了占用其他端口的进程),发现apache2占用5330端口。

  • 测试apache是否正常工作:在kali的firefox浏览器上输入127.0.0.1:5330localhost:5330(这里的端口号为/etc/apache2/ports.conf下设置的Apache监听端口号,我设置为了自己的学号。localhost指kali的IP地址(这里我用了回环地址同样可以测试))。测试结果如下:

(二)网页编写

前端编程

  • 使用以下命令在/var/www/html目录下编辑测试网页test.html

    cd /var/www/html
    touch test.html
    vi test.html
    • 网页代码

  • firefox浏览器中输入网址127.0.0.1:5330/test.html打开该网页

  • 点击login页面发生跳转,但跳转失败。原因是还没有编写php后端文件。

JavaScript

  • 对网页代码进行改进,加入JavaScript语句。

    • 输入用户名,不输入密码。提示输入密码。

    • 输入密码,不输入用户名。提示输入用户名。

    • 二者均输入。成功。

PHP后端

  • /var/www/html目录下编辑测试php文件login.php

    <?php
    echo ($_GET["a"]);
    include($_GET["a"]);
    echo "This is lxm php test page!<br>";
    ?>
  • 在浏览器打开127.0.0.1:5330/login.php?a=/etc/passwd可看到/etc/passwd文件的内容

(三)MySQL基础

  • 使用/etc/init.d/mysql start命令开启sql服务。

  • 输入mysql -u root –p,并根据提示输入密码(默认密码为p@ssw0rd),进入MySQL.

  • 输入show databases;,查看基本信息

  • 更改MySQL用户密码可以通过如下方式:

    • 输入use mysql;选择mysql数据库;
    • 输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限;
    • 输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';
    • 输入flush privileges;更新权限;
    • 输入quit退出。
  • 重新输入mysql -u root –p,输入密码检测新密码能否成功使用,登陆成功。

  • 在Mysql中建库建表

    • create database zy; 建立一个数据库

    • use zy;进入数据库

    • create table zy (username VARCHAR(20),password VARCHAR(20));建立一个数据表

    • insert into zy values('zy','5330');添加数据库的信息

    • select * from zy;查看数据库中内容

  • 新建用户:grant select,insert,update,delete on 数据库.* to 用户名@localhost identified by "密码";将对某数据库的所有表的select,insert,update,delete权限授予某用户。

  • 退出后,输入mysql -u 用户名 –p登录。成功。

(四)php+mysql实现登录网页编写

  • 在/var/www/html文件夹下编辑test2.html

    <html>
    <html>
    <head>
    <title>test2</title>
    </head>
    <body>
    <form name="login" method="POST" action="login.php">
    <table>
    <tr><td>username:</td><td><input type="text" name="username" onfocus="if (this.value=='Your name') this.value='';" /></td></tr>
    <tr><td>password:</td><td><input type="password" name="userpwd" onfocus="if (this.value=='Your password') this.value='';" /></td></tr>
    </table>
    <input type="submit" value="login" onClick="return validateLogin()"/> <input type="reset" value="reset">
    </form> <script language="javascript">
    function validateLogin(){
    var sUserName = document.login.username.value ;
    var sPassword = document.login.password.value ;
    if ((sUserName =="") || (sUserName=="Your name")){
    alert("user name");
    return false ;
    } if ((sPassword =="") || (sPassword=="Your password")){
    alert("password!");
    return false ;
    } }
    </script>
    </body>
    </html>
  • 在同样的目录下编辑login.php,通过php实现对数据库的连接

  • firefox浏览器中输入127.0.0.1:5330/test2.html,就可以访问自己的登陆页面啦

  • 在登录页面中输入数据库中存有的用户名和密码并点击提交进行用户认证登录成功,输入数据库中没有的就会认证失败

  • 登陆成功。

遇到的问题

  • 在登录跳转过程中页面显示以下信息:

  • 最后发现是php文件中的$mysqli = new mysqli("127.0.0.1", "zy", "123456", "zy");语句里的值有问题。经过更改后成功登陆。第一个zy对应的是MySQL的用户名,123456是用户密码,第二个zy是所要使用的数据库名。

(五)SQL注入

  • 这个漏洞是由语法造成的漏洞,接下来对刚刚自己建立的登录网站进行注入。

  • 构造SQL注入语句:在用户名输入框中输入' or 1=1#,密码随便输入,此时合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=m''

    即以下的两句sql语句等价:

    select * from users where username='' or 1=1#' and password=''

    select * from users where username='' or 1=1

  • “#”号的作用是注释掉后面的语句,而1=1作为永真式表示永远是都是成立的,即where子句总是为真,所以能够成功登录。



通过SQL注入将用户名和密码保存在数据库中

  • 由于之前的代码中的if ($result = $mysqli->query($query_str))判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))用于执行多个sql语句。

  • 在用户名输入框中输入';insert into lxmtable values('xx','5330','1234567890');#,拆开来看就是

    SELECT * FROM lxmtable WHERE username='';

    insert into lxmtable values('xx','5330','1234567890');

  • 查看数据库中的数据,发现新增了一条xx 5330的数据,说明插入成功

  • 使用插入的用户名和密码登录。

  • 成功。

(六)XSS攻击

  • 在用户名输入框中输入<img src="22.png" />读取/var/www/html目录下的图片:





遇到的问题

  • 一开始无法显示图片

  • 右键查看未显示的图片出现如下图所示警告:

  • /var/www/html目录下通过chmod 755 22.png获取图片权限后成功。

参考文章

20155330 《网络对抗》 Exp8 Web基础的更多相关文章

  1. 20145326蔡馨熤《网络对抗》—— Web基础

    20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...

  2. 20155305《网络对抗》Web基础

    20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  3. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...

  4. 20155311《网络对抗》Web基础

    20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  5. 20145216史婧瑶《网络对抗》Web基础

    20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...

  6. 20145227鄢曼君《网络对抗》Web基础

    20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...

  7. 20145312袁心《网络对抗》Web基础实践

    20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...

  8. 20145321 《网络对抗》 Web基础

    20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签——这里面包含了处理表单数据所用CGI程序 ...

  9. 20145330 《网络对抗》 Web基础

    20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...

  10. 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...

随机推荐

  1. SVN CentOS7 下配置svn的安装及基础配置介绍

    CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一.      实践环境 CentOS 7操作系统(CentO ...

  2. Mac走moneky

    1. 安装卸载apk ① 安装apk:下载apk到电脑 ,adb install -r 拖动apk adb install /Users/yangdan/Downloads/tutor-6.18.0. ...

  3. LeetCode题解之 Convert Sorted Array to Binary Search Tree

    1.题目描述 2.问题分析 使用二分法即可. 3.代码 TreeNode* sortedArrayToBST(vector<int>& nums) { ) return NULL; ...

  4. DevOps之基础设施-电力

    唠叨话 关于噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <基础设施-电力> 关于基础设施的电力部分,知识与技能的层次(知道.理解.运用),理论与实践的 ...

  5. eclipse中svn插件的工程不能与svn资源库同步的解决方法

    eclipse中svn插件的工程不能与svn资源库同步的解决办法 最近几天自己的工程与资源库同步总是出现问题,重启机器后发现资源库丢失了,无法进行同步. 解决办法如下: 1.右键工程---->选 ...

  6. Oracle EBS INV 查询物料无值 ECO

    查找物料的时候报错 没有输入值 解决方法: 针对FORM做trace 多查看几个生成的trace 搜索 MTL_SYSTEM_ITEMS_b 的信息 查看到最后面的语句(一般可直接查看) 看SQL 哪 ...

  7. SQL Server中数据库文件的存放方式,文件和文件组 (转载)

    简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文 ...

  8. 浅谈C#中的 async await 以及对线程相关知识的复习

    C#5.0以后新增了一个语法糖,那就是异步方法async await,之前对线程,进程方面的知识有过较为深入的学习,大概知道这个概念,我的项目中实际用到C#异步编程的场景比较少,就算要用到一般也感觉T ...

  9. OverAPI.com – 史上最全的开发人员在线速查手册

    不管你是多么优秀的程序员,你都不可能记住一切.在你编写程序的过程中碰到问题需要查阅手册的时候,若有现成的在线手册可参考则可以为你节省很多时间.为了方便各位朋友,我向大家推荐一个非常棒的在线手册索引网站 ...

  10. 转:queue

    数据结构C#版笔记--队列(Quene)   队列(Quene)的特征就是“先进先出”,队列把所有操作限制在"只能在线性结构的两端"进行,更具体一点:添加元素必须在线性表尾部进行, ...