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. windows 上驱动阻止关机重启操作

    Windows 上关机重启有很多相关的操作 HOOK 一个点搞不定  具体需要以下 4 处来布控 SSDT HOOK NtInitiatePowerAction 函数 ,直接返回失败废掉这个函数 SS ...

  2. 【七牛云】时间戳防盗链鉴权php实现

    基于时间戳防盗链的功能其实每家的CDN都是支持的.主要是通过使用约定的加密字符串来对具有访问有效期的资源链接进行一些加密计算的到一个sign值,然后访问外链里面带上这个sign和截止时间戳去访问CDN ...

  3. sencha touch 入门系列 (九) sencha touch 布局layout

    布局用来描述你应用程序中组件的大小和位置,在sencha touch中,为我们提供了下面几种布局: 1.HBox: HBox及horizontal box布局,我们这里将其称为水平布局,下面是一段演示 ...

  4. nodejs 事件EventEmitter

    index.js: // 引入 events 模块 var events = require('events'); //处理函数要写在调用前 var eventHandler = function() ...

  5. session.cookie.lifetime和session.gc.maxlifetime的关系

    session.cookie.lifetime session.cookie.lifetime 默认是0,即浏览器关闭,session失效:修改这个值的作用是修改sessionid以cookie的形式 ...

  6. oracle基础开发工具及常用命令

    oracle自带用户的讲解 1,oracle安装完毕创建数据库实例的时候会自动生成sys,system,scott 2,sys用户超级管理员,具有oracle的最高权限,具有sysdba角色,具有cr ...

  7. In ZeroDB, the client is responsible for the database logic. Data encryption, decryption, and compression also happen client side. Therefore, the server never has any knowledge about the data, its str

    zerodb/index.rst at master · zerodb/zerodb https://github.com/zerodb/zerodb/blob/master/docs/source/ ...

  8. 小米范工具系列之十:小米范SSH批量命令执行工具

    小米范SSH批量命令执行工具的主要功能是自动登录多台机器,并执行指定的命令,比如批量抓取shadow.批量获取系统版本.或者做基线时批量抓取配置等. 此工具使用java 1.8以上版本运行. 界面如下 ...

  9. pouch架构源码分析

    // daemon/daemon.go 1.func NewDaemon(cfg config.Config) *Daemon 调用containerStore, err := meta.NewSto ...

  10. Jscript运行时错误:没有权限

    问题:我在页面A中放了一个iframe ,然后在iframe 的子页面中调用主页面中的JavaScript函数,结果报错Jscript运行时错误:没有权限 原因有2: 1. 是逻辑错误,比如先关闭了i ...