20145320WEB基础实践

实验问题回答

  • 1.什么是表单

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

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

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

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

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

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

    • 比较常用的有PHP语言和JSP语言。

实验总结与体会

初步认识一个简单的登录界面是如何操作的,但是由于数据库语言为了方便用户使用,便有了较大漏洞,出现类似SQL注入、XSS注入等。这些注入非常巧妙,简直防不胜防,我们今天接触到还是最简单的,只要使用关键词过滤或者正则表达式就可完成避免这些被方法注入。但是还是会有更高级的做法,然后又会出现相应的对策!这个就是一个相互斗争发展的过程!

实践过程记录

(一)环境配置

  • 通过apachectl start开启Apach,使用netstat -aptn查看端口占用:在这里apach2占用端口80

  • 测试apache是否正常工作:在kali的火狐浏览器上输入localhost:80(其实这里的端口号就是/etc/apache2/ports.conf下设置的Apache监听端口号,这里的localhost是你的kali的IP地址(我这里是192.168.47.133),由于上个实验的影响打开的是伪装的网页)

(二)简单的网页编写

去年上网络编程课程时学过类似的内容,直接把内容拷进来了,其实就是几张图片和一些css

(三)MySQL基础

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

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

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

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

      ·输入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 SCHEMA `20145320`;
    CREATE TABLE `20145320`.`users` (
    `userid` INT NOT NULL COMMENT '',
    `username` VARCHAR(45) NULL COMMENT '',
    `password` VARCHAR(256) NULL COMMENT '',
    `enabled` VARCHAR(5) NULL COMMENT '',
    PRIMARY KEY (`userid`) COMMENT '');
  • 向表中添加用户

      use 2014530;
    insert into users(userid,username,password,enabled) values(1,'20145320',password("88330016"),"TRUE");

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

  • 在/var/www/html文件夹下输入vim 20145320.html,将我去年的所写的代码修改一下

  • 在同样的目录下输入vim login.php,通过php实现对数据库的连接

  • 在火狐浏览器中输入localhost:80/20145320.html,就可以访问自己的登陆页面啦

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

  • 最终登陆成功的样子如下

这里有个重大的漏洞!口令以明文形式展现在了用户面前,虽然在数据库中是以MD5压缩的,但是在前端就被看得清清楚楚,更不要说我用burpsuite去截获数据包了!知道这个我甚至都不需要

(五)SQL注入

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

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

    以下的两句sql语句等价:

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

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

  • “#”号的作用注释掉后面的语句,所以后面就不用验证口令的md5值,而且1=1永远是都是成立的,即where子句总是为真,所以能够成功登录

分析一下出现在地址栏的这些参数'+or+1%3D1%23,所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字),例如空格为%20,等号为%3D,井号为%23,但是还有不会被此方法编码的字符: *、~、-、.

  • 通过SQL注入将用户名和密码保存在数据库中';insert into users(userid,username,password,enabled) values(3,'aaa',password("aaa"),"TRUE");#

    翻译过来就是

SELECT * FROM users WHERE username='';

insert into users(userid,username,password,enabled) values(3,'aaa',password("aaa"),"TRUE");

但是页面跳转是空白页,以我的代码来看也就意味着if ($result = $mysqli->query($query_str))不成立,即result为fault。

这是php防范SQL攻击的措施

可以修改为$result = $mysqli->multi_query($query_str)实现多条SQL语句

  • 但是我输入用户名aaa密码aaa登录是不成功的,为了检验语句是否执行成功,我直接进了数据库中查找,看起来显然注入是没有问题的。

  • 据说应该是$result->num_rows>0在我把query改为multi_query的时候出现了问题,于是参照别的同学修改代码为:

我感觉这个是在躲避问题,当多条语句SQL输入时上面的if被执行,当只输入一条SQL语句则两个if被执行

  • 输入

    ';insert into users(userid,username,password,enabled) values(666,'aaa',password("aaa"),"TRUE");#新插入一个用户

8.此时在登录页面输入用户名aaa密码aaa,成功

(六)XSS攻击

输入20145320可以看见图片

20145320《WEB基础实践》的更多相关文章

  1. 20155326《网路对抗》Exp8 WEB基础实践

    20155326<网路对抗>Exp8 WEB基础实践 实践内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...

  2. 20145236《网络对抗》Exp8 WEB基础实践

    20145236<网路对抗>Exp8 WEB基础实践 一.基础问题回答 什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框. ...

  3. 20155206 Exp8 WEB基础实践

    20155206 Exp8 WEB基础实践 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以 ...

  4. 20155210 Exp8 WEB基础实践

    Exp8 WEB基础实践 Apache环境配置 apache是kali下的web服务器,通过访问ip地址+端口号+文件名称可以打开对应的网页. 输入命令vi /etc/apache2/ports.co ...

  5. 20155216 Exp8 WEB基础实践

    Exp8 WEB基础实践 实践内容 Apache环境配置 apache是kali下的web服务器,通过访问 ip地址+端口号+文件名称 打开对应的网页. 输入命令 vi /etc/apache2/po ...

  6. 20155223 Exp8 WEB基础实践

    20155223 Exp8 WEB基础实践 基础问题回答 什么是表单? 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素. 表单使 ...

  7. 20155317王新玮《网络对抗技术》实验8 WEB基础实践

    20155317王新玮<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...

  8. 20155331《网路对抗》Exp8 WEB基础实践

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

  9. 《网路对抗》Exp8 WEB基础实践

    20155336<网路对抗>Exp8 WEB基础实践 一.基础问题回答 1.什么是表单 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等 ...

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

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

随机推荐

  1. cocos 简便斗地主发牌动画

    niuniuSend : function (int) { switch(int) { case 0: for(var i=0;i<5;i++){ var sp = new ccui.Image ...

  2. (已解决)Eclipse报错:Could not find XXX.apk. 没有Android项目命名. There is no android project named

    可能是你把当前项目设置为library项目了,按以下步骤切换回普通项目: 选择 Project->Properties 在左边的列表中,选择 Android 取消钩中"Is Libra ...

  3. 30.get和post的区别

    POST和GET的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个 ...

  4. 从0开始搭建vue+webpack脚手架(一)

    基于多数情况下都是使用vue-cli初始化项目, 却始终未去了解其原理.从零开始搭建,可以让自己更深层次的理解框架. 首先从最基本的npm 开始, 至于安装npm 和 node就不用再赘述了,那是前端 ...

  5. Docker 在转发端口时的这个错误Error starting userland proxy: mkdir /port/tcp:0.0.0.0:3306:tcp:172.17.0.2:3306: input/output error.

    from:https://www.v2ex.com/amp/t/463719 系统环境是 Windows 10 Pro,Docker 版本 18.03.1-ce,电脑开机之后第一次运行 docker ...

  6. MYSQLi数据访问批量删除

    <link href="../bootstrap.min.css" rel="stylesheet" type="text/css" ...

  7. 内网渗透之如何玩转Meterpreter?(nc.exe)

    十.Meterpreter常用命令 1.基本命令(包含meterpreter和msf终端.ruby接口.目标shell交互的命令) background(进程隐藏至后台) sessions(查看已经成 ...

  8. DataRow 点不出 Select

    DataRow 点不出 Select?why?using system.linq;

  9. Maven的特点、优点-功能摘要

    Maven功能摘要 以下是Maven的主要特点: 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加 卓越的依赖管理,包括自动更 ...

  10. 大数据和hadoop的一些基础知识

    一.前言 大数据这个概念不用我提大家也听过很多了,前几年各种公开论坛.会议等场合言必及大数据,说出来显得很时髦似的.有意思的是最近拥有这个待遇的名词是“人工智能/AI”,当然这是后话. 众所周知,大数 ...