20145219《网络对抗》Web基础

基础问题回答

  • 什么是表单?

    HTML表单用于收集用户输入,用<form>元素定义,包含不同类型的 input元素、复选框、单选按钮、提交按钮等等。主要包含三个参数:

      action参数:指定后台服务器处理这个表单的脚本,即点击提交后显示的页面。
    method参数:GET方法,后面的输入值会显示在URL中提交;POST方法则封装到数据中提交。
    onsubmit参数:提交时触发的事件。
  • 浏览器可以解析运行什么语言?

    HTML、JavaScript、PHP、ASP、XML、CSS等。

  • WebServer支持哪些动态语言?

    JavaScript、ASP、PHP等。

实践过程记录

  • Kali IP地址:192.168.87.128

Web前端:HTML

使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kill 原进程号,如果空闲就用apachectl start开启Apache,然后再次用netstat -aptn查看端口占用情况。

在kali的火狐浏览器上输入localhost:80测试apache是否正常工作(正常的话会显示上次实验设定了电子教务网的网页)。

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

打开浏览器访问localhost:80/sg1.html,出现刚才编写的HTML页面。

点击submit会跳转,但是因为我还没有设置跳转页面,所以会出现如下错误提示:

Web前端:javascript

用JavaScript来编写一个验证用户名、密码的函数,当其为空时提示错误信息,把它和前面的sg1.html合起来形成一个新的HTML网页sg2.html

Web后端:MySQL基础

/etc/init.d/mysql start开启sql服务。

输入mysql -u root –p用账号root登录,并根据提示输入对应密码,默认密码为p@ssw0rd,进入MySQL。

show databases;查看基本信息(注意:英文;是结束符,不能省略)。

因为root用户的密码太复杂了,所以我们给它改个简单的,步骤如下:

use mysql;,选择mysql数据库。

select user, password, host from user;,查看mysql库中的user表中存储着用户名、密码与权限。

输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';更改密码。

flush privileges;进行更新。

输入quit退出mysql

然后,重新输入mysql -u root –p,使用新密码登录,检测新密码能否成功使用,能成功登录即可。

在这里我遇到了一个小问题,我输入mysql -u root –p后出现如下提示,大概是说我这个用户没有密码……

这我就很尴尬了,我明明刚刚成功改了密码也更新了。经过我百度寻找解决方法,我发现我输入mysql -uroot –p(就是在u和root之间不输入空格)就可以成功了……

我也不知道是为什么,反正莫名其妙就成功了。关键是,之后我退出后再输入mysql -u root –p也可以了,但是我再次改了密码后就又不行了,刚改完密码必须得使用mysql -uroot –p,之后才能使用mysql -u root –p……

在Mysql中建库建表,如下输入:

输入use 库表名使用刚建的库表。

输入insert into users(userid,username,password,enabled) values(ID号,'用户id',password("用户密码"),"TRUE");添加新用户。

Web后端:PHP网页

/var/www/html目录下新建一个test.php简单了解、测试一下PHP。

登录localhost:80/test.php出现如下界面:

/var/www/html目录下编写一个sg4.html(在之前的sg2.html上加工),设置将sg4.html的表单提交到sg4.php

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

在浏览器中输入localhost:80/sg4.html,显示用户登录界面。

在其中输入正确的用户名和密码,显示登陆成功。

在其中输入错误的用户名和密码,显示登录失败。

最简单的SQL注入

在用户名输入框中输入' or 1=1#,密码随便输入,竟然会显示登陆成功!

这是因为,这时候' or 1=1#合成后的SQL查询语句为select * from lxmtable where username='' or 1=1#' and password=md5('')#相当于注释符,会把后面的内容都注释掉,1=1是永真式,所以这个条件肯定恒成立,一定会登陆成功。

在用户名框中输入';insert into users(userid,username,password,enabled) values(111,'123',password("321123"),"TRUE");#通过SQL注入将用户名和密码保存在数据库中,这就相当于是SELECT * FROM users WHERE username=''; insert into users(userid,username,password,enabled) values(111,'123',password("321123"),"TRUE");

这时数据库中已经有了新输入的这个用户和密码。

使用这个新输入的这个用户和密码在网页中登录就没有问题了。(在这一步时需要对原本的sg4.php进行一些修改,使其允许多条sql语句执行,我是看着罗天晨的博客慢慢改的)。

XSS攻击测试

/var/www/html目录下事先保存一个图片文件sg5219.png(这是我的主机桌面截图),然后在登录网页的用户名窗口中输入<img src="sg5219.png" />20145219</a>,点击登录就会显示出这张图片。

实验总结与体会

这次实验赶上了五一劳动节,实验内容看起来还是挺多的,本来是想在假期试着做一点儿的,然而,三天假期转瞬即逝,我还没来得及收心就结束了,自然也就没有着手做这次的实验,直到开学才重新回到电脑前。这个实验其实我们上学期在刘念老师的一门选修课上做过类似的,不过那个时候是作为最后大实验做的,一组做一个,大概搞了半个多月才搞定。这次实验和上次相似的地方是做HTML、JavaScript和MySQL部分,所以这方面成功的比较快,基本没什么大问题。我大部分时间花费在了PHP网页部分,我也不太清楚究竟是那一个细节上有问题,我加上PHP网页后怎么都不能和数据库成功连接,试了几个小时都是connect failed,在代码上反复修改,但是越急越出问题,最后就暂时放弃了。周六我又接着做PHP这一块,想着反正之前的代码也不成功,干脆从PHP这一块开始推翻重来,没想到居然成功了!大概是运气来了吧,也可能是这几天闲着阅读别人的PHP代码在无意间记住了一些关键细节,总之成功了,真的是十分的开心O(∩_∩)O~~

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

  1. 网络对抗——web基础

    网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...

  2. 20145306 张文锦 网络攻防 web基础

    20145306 网络攻防 web基础 实验内容 WebServer:掌握Apache启停配置修改(如监听端口)前端编程:熟悉HTML+JavaScript.了解表单的概念编写不同的HTML网页,放入 ...

  3. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  4. 20145219《网络对抗》Web安全基础实践

    20145219<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  5. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  6. 20155324王鸣宇 《网络对抗技术》Web基础

    20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...

  7. 2017-2018-2 20155228 《网络对抗技术》 实验九:Web安全基础

    2017-2018-2 20155228 <网络对抗技术> 实验九:Web安全基础 1. 实践内容 1.1 标理解常用网络攻击技术的基本原理 1.2 在Webgoat实验环境下实践相关实验 ...

  8. 2017-2018-2 20155228 《网络对抗技术》 实验八:Web基础

    2017-2018-2 20155228 <网络对抗技术> 实验八:Web基础 1. 实践内容 1.1 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET ...

  9. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

随机推荐

  1. c++11——基于范围的for循环

    c++11中有基于范围的for循环,基于范围的for循环可以不再关心迭代器的概念,只需要关系容器中的元素类型即可,同时也不必显式的给出容器的开头和结尾. int arr[] = {1, 2, 3, 4 ...

  2. poj_1390 动态规划

    题目大意 将一些连续的序列根据颜色分为N段,每段有颜色 为 Ci, 长度为 Li.每次点击其中的一段 i ,则可以将该段i消除,该段相邻的两段自动连接到一起,如果连接到一起的两段之前的颜色相同,则更新 ...

  3. poj_3580 伸展树

    自己伸展树做的第一个题 poj 3580 supermemo. 题目大意 对一个数组进行维护,包含如下几个操作: ADD x, y, d 在 A[x]--A[y] 中的每个数都增加d REVERSE ...

  4. ubuntu的两种网络连接模式

    ubuntu的网络连接分成两种类型,一种是modern 模式, 这种模式的配置通过ifconfig命令来进行配置,重启之后失效,这种模式就是在destop 下右上角的网络连接.如图所示 modern模 ...

  5. MQTT-SN协议乱翻之消息格式

    前言 紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式. 通用消息格式 消息头 其它可变部分 2/4字节表示 N字节组成 消息头部 长度 消息类型 1或3个字节 1 ...

  6. kubernetes创建yaml,pod服务一直处于 ContainerCreating状态的原因查找与解决

    最近刚刚入手研究kubernetes,运行容器的时候,发现一直处于ContainerCreating状态,悲了个催,刚入手就遇到了点麻烦,下面来讲讲如何查找问题及解决的 运行容器命令: kubectl ...

  7. chrome单步调试代码

    单步调试代码 所有步骤选项均通过边栏中的可点击图标 表示,但也可以通过快捷键触发(鼠标悬停在操作图标上就可以看到快捷键).下面是简要介绍: 图标/按钮 操作 描述 Resume 继续执行直到下一个断点 ...

  8. PMP 笔记

    项目: 为创造独特的产品.服务或结果而进行的临时性工作. 项目特征: 独特性:Unique.临时性:Temporary.渐进明细. 渐进明细:预算越来越精细.比如三峡工程中,预算从10亿级的误差到1亿 ...

  9. Python 使用 Matplotlib 做图时,如何画竖直和水平的分割线或者点画线或者直线?

    作者:看看链接:https://www.zhihu.com/question/21929761/answer/164975814 可以使用: vlines(x, ymin, ymax) hlines( ...

  10. Vue 学习顺序

    起步: 1.扎实的 JavaScript / HTML / CSS 基本功,ES6 最好过一遍 2.通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script&g ...