20145325张梓靖 《网络对抗技术》 Web基础

  

实验内容

  • 开启apahce,设计web前端HTML
  • 设计web前端javascipt
  • 设计web后端mysql
  • 设计web后端php
  • 单句sql注入攻击
  • 多句sql注入攻击

基础问题回答

  1. 什么是表单

    在网页设计中,html里的一个包含表单元素的区域,允许用户在表单中输入内容并可搜集不同类型的用户输入,通过submit可将数据传送到后台进行处理
  2. 浏览器可以解析运行什么语言

    任何的脚本语言,例如php、python、JSP,javascipt。设计网页使用的HTML,css
  3. WebServer支持哪些动态语言

    一般使用JSP,PHP语言

实验总结与体会

    在本次实验中,我们实现了一个小的web程序,包括前端的设计,后台的设计,数据库的连接等,这些在上学期的web编程设计课上也学习了。实验中,我们又测试了使用sql语句的注入,实现不合法用户的成功登陆和数据库信息的恶意添加,但是能够实现这些注入,重点的还是看自己写的代码是否有漏洞,就像在后面的实验步骤里我所讲的一样(以老师指导上的php代码为例),如果利用永真式来达到非法登陆,在最初始使用的php代码是可以实现的,但如果我们将判断合法用户的条件改为=1,则大大的减小了非法用户登陆的可能性(利用永真式的话),但这只是大大的,并不是不可能,所以我们还可以修改php中sql语句的设计,不让sql语句同前端用户输入的信息有关联,就更可以减少sql语句的注入了,所以说,代码的完整度越高、考虑得越全面,能够捕捉到的代码漏洞也就越少,安全问题也就越可以尽量多的避免。

实践过程记录

开启apahce,设计web前端HTML

  • 配置apache2端口为8087

  • 开启apache2,查看当前开启端口运行情况

  • 打开浏览器输入127.0.0.1:8087,确定是否成功打开apache(此处因上次实验而把本机地址网站页面copy成新浪首页)

  • 在/var/www/html下新建文件,测试是否能在浏览器中成功打开

  • 继续在同一目录下编写html主页,如图

  • 编写该HTML简单的对应PHP

  • 在浏览器中打开HTML

  • 点击Login GET,发现在URL栏中可以看出传送的明文密码与用户名

  • 点击Login POST,发现在URL栏已不可以看出明文密码与用户名

设计web前端javascipt

  • 在html主页的基础上,使用javascipt对头部分添加判断密码框输入字符是否大于5个

  • 在浏览器中打开更新后的主页,输入密码字符数小于5,提交,出现如图框

设计web后端mysql

  • 启动mysql后,使用原用户名密码进行登录,进入命令行式的mysql界面,创建新用户

  • 创建新的数据库,并在新数据库里创建一张新表

  • 在新表中添加2条信息后,如图展示现表的内容

设计web后端php

  • 编写能够连接mysql数据库中刚建立的那种新表,且可以判断是否为合法用户的php代码(这里使用的是老师指导上的php代码)

  • 使用已存在的用户名密码进行登录(这里都是使用的GET模块登录)

  • 使用错误密码登录

单句sql注入攻击

  • 输入如图显示的用户名,即可登陆成功(但这与所写的php代码有关,这里之所以可以成功是因为判断是否是合法用户,是直接用sql语句寻找是否有符合条件的,然后依据返回的行是否大于0,大于0则成功)

  • 如果我们改动一下php代码,sql语句不变,将判断条件该为返回的行是否等于1(因为如果真的在用户表中可以找到符合条件的用户与密码,那么返回的行数一定为1,而如果是像上图输入用户名,则sql语句执行以后的结果是用户表里的总行数,只要用户表里的注册用户不是只有1位,那么这种sql注入就会成为无效的)

  • 当然,上面改动的php并不完全保险,毕竟万一用户表中就是只有1个用户呢?所以我们还可以改代码,将sql语句改变一下,变成select用户表中的所有信息,在判断条件上变成对select所得到的信息进行索引判断是否有用户名与密码同时对应的,有的话则返回登录成功,无的话则登录失败

多句sql注入攻击

  • 使用insert语句输入用户名框,方法同单句sql一样,将username变为空,注释掉密码判断条件(但这里同样需要更改下php代码,因为多句注入要使用multi_query才可以)

  • 打开mysql中php连接使用的用户表,发现确实成功添加了新用户

  • 这个时候如果不改php代码,无论使用哪个正确的用户名密码登录都是显示的登录失败,因为多条SQL使用的multi_query,如果第一条SQL命令在执行时没有出错,这个方法就会返回TRUE,否则将返回FALSE,而不是返回的表信息,所以返回结果不等于1,或者也可以说是不>0,既然if的条件不成立,所以else的结果就会不断的显示(即登录失败),无论用什么正确的用户名密码

  • 我们可以将php代码简单改下,还原成以前的php,即将multi_query改为以前的query,成功!

20145325张梓靖 《网络对抗技术》 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. 关于 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF 错误

    用WebClient 去下载数据时发现有服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF错误,解决办法 1.在app.config种添加 we ...

  2. unity3d-知识汇总

    itween下载 http://www.youkexueyuan.com/exp_show/1147.html 代码修改精灵图片的透明度 UIBp.GetComponent<Image>( ...

  3. recover database noredo时报错ORA-19573

    环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC 今天发现DG备库归档空间满,清理后发现备库出现GAP,需要从主库做基于SCN的增量备份进 ...

  4. python知识补足

    1.class的init功能,初始化class,给出一些初始值 __init__可以理解成初始化class的变量,取自英文中initial 最初的意思.可以在运行时,给初始值附值, class Cal ...

  5. java随机排座位

    //打乱学生顺序 Collections.shuffle(); 容我记个单词 peer: vi.凝视; 盯着看; 隐退,若隐若现; 同等,比得上;n.同辈,同等的人; 贵族; 同伴,伙伴;adj.贵族 ...

  6. 独立出properties的mybatis连接池

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/java505?useSSL=true&chara ...

  7. ajax提交完表单数据依然跳转的解决办法

    1. 既然ajax提交数据,就把表单里面submit按钮换掉,因为触发submit他就会跳转页面 提交的时候他会先触发ajax 再触发submit的提交 2.如果确定了表单没有submit,那么把提交 ...

  8. 同一个电脑安装两个jdk版本

    同一个电脑安装两个jdk版本 场景:公司项目使用的jdk为1.,最近不是很忙,学习scala.该系统使用到了jdk1.8的特性,所以I need 俩版本,开整!!! . 准备两个版本的jdk我的两个j ...

  9. Visio 保存卡死解决办法

    右键Visio图标 属性--兼容性--以兼容模式运行这个程序 要打上对勾  且下面的系统版本要选和你电脑版本一致的选项 特权等级   以管理员身份运行次程序  要打上对勾

  10. jdk自动安装java_home 无法修改解决方法

    使用命令行修改 cmd下set java_home=D:\soft\java\jdk1.7.0_72 搞定