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. jquery简介未完成

    jQuery jQuery是一个快速.简洁的javascript框架,是继prototype之后又一个优秀的代码库(或者javascript框架).jQuery设计的宗旨是writeLess,Do M ...

  2. 第六天实验详解——dedecms通过xss漏洞写马

    第六天实验详解 **XSS跨站攻击的分类** XSS漏洞类型主要分为持久型和非持久型两种: 1. 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞. 2. 持久型X ...

  3. Hibarnate控制台打印不出sql,并且报出异常:org.hibernate.exception.JDBCConnectionException: Cannot open connection

    1.认真查看hibarnate.cfg.xml文件中连接数据库的各个信息是否正确;如果正确看下一步; 2.MySQL版本>=5.6.X,对应的mysql-connector-java jar 的 ...

  4. html5粒子连线

    <html> <head> <title></title> <meta charset="utf-8" /> <s ...

  5. Chrome 扩展

    http://www.cnblogs.com/coco1s/p/8004510.html

  6. Lua 可变参数之arg与select

    function TestFunc(...) local arg = { ... } --Lua .2以后不再支持默认arg参数,{}与...之间要有空格 print("输入的参数个数:&q ...

  7. Redis Cluster(集群)的搭建

    一.Redis的下载.安装.启动(单实例) 我们统一将Redis安装在/opt目录下,执行命令如下: $ cd /opt $ wget http://download.redis.io/release ...

  8. java三大工厂结果总览

    2018-11-02 21:27:18 开始写 谢谢.Thank you.Salamat Do(撒拉玛特朵).あリがCám o*n(嘉蒙)とゥ(阿里嘎都).감사합니다 (勘三哈咪瘩).terima K ...

  9. uva 1322 Minimizing Maximizer

    题意: 有n个数,m个排序器,每个排序器可以把区间ai到bi的数从小到大排序.这m个排序器的输出就是m个排序之后的第n个数. 现在发现有些排序器是多余的.问至少需要多少个排序器可以使得输出不变.排序器 ...

  10. video control

    function VideoControls(option){ this.id = option.videoId; this.videoId = document.getElementsByTagNa ...