20145239杜文超《网络对抗》- Web基础

基础问题回答

  1、什么是表单?

  • 表单是一个包含表单元素的区域。

  • 表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。

  • 表单使用表单标签(<form>)定义。

  2、浏览器可以解析运行什么语言?

  • 支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。

  3、WebServer支持哪些动态语言?

  • 常用的有ASP语言,PHP语言和JSP语言。

实验总结与体会

  本次实验具有一定的难度。理解前端html以及JS和后台php以及数据库的关系很重要。好在上学期有学过网络安全编程基础,对于html语言还是比较熟悉,特别是登陆页面的html代码也基本上了然于心了。PHP脚本是我第一次接触,挺生疏的,代码基本上完全参照了同学和老师的,就这样在后面SQL注入需要一次执行多条命令的时候还是出了问题,加了muti之后无法成功注入,耽误了好几个小时。数据库以前用的是access这次用的是mysql,没有图形化界面在命令行下使用,也是一次学习的过程,而且我觉得学好数据库对以后也是很有帮助的。

实践内容

前端HTML

输入apachectl start开启Apache。开启失败,使用netstat -aptn查看端口占用情况。

vi /etc/apache2/ports.conf修改端口,此处我设置成了自己的学号。

再次查看apache端口已改为5239。

Apache服务开启后,我们在浏览器中输入localhost:5239进行查看.看到了上次克隆的网页,说明apache工作正常。

编写一个含有表单的html。

浏览器里简单看一下结果,因为我们的action填的是#,所以现在输入如何东西都不会跳转,只会回到当前页面。

前端javascipt

1.相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
2.文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。

此时我们重新编写刚才的html文件,使其具有个验证用户名、密码的规则。

后台MySQL

输入/etc/init.d/mysql start指令开启mysql服务。输入mysql -u root -p登陆,初始密码p@ssw0rd。

输入use mysql;进入数据库,输入update user set password=PASSWORD("新密码") where user='root';修改密码,此处我改为了自己的学号。

最后要输入flush privileges;更新权限。quit退出后尝试用新密码登陆,成功进入即密码修改成功。

使用create database 库名;建立一个数据库。使用show databases查看存在的数据库,然后use dwc5239。

在我们的数据库里建一个新数据表,create table 5239table(username VARCHAR(50),password VARCHAR(50),telephone VARCHAR(11));

输入show tables查看已有的数据表。输入insert into 表名 values('值1','值2','值3'...);给数据表中插入数据,包括三项用户名,密码,联系电话。

插入完可以使用select * from 5239table 查看一下。

我们也可以使用如下命令增加mysql新用户:grant select(insert,update,delete) on 数据库.* to 用户名@登录主机 identified by "密码";

用刚注册的用户尝试登陆一下,登陆成功!

后台PHP测试

vi /var/www/html/dwc_test.php新建一个php测试文件。

在浏览器输入localhost:5239/dwc_test.php测试一下,如图所示,测试成功。

测试完成后,我们可以利用PHP和MySQL结合之前编的登录网页进行简单的用户身份认证。结合老师给出的代码,vi login.php修改几个部分:

  1. <?php
  2.  
  3. $uname=($_POST["username"]);
  4. $pwd=($_POST["password"]);
  5.  
  6. /* echo $uname; */
  7.  
  8. $query_str="SELECT * FROM 5239table where username='{$uname}' and password='{$pwd}';";
  9.  
  10. /* echo "<br> {$query_str} <br>";*/
  11.  
  12. $mysqli = new mysqli("127.0.0.1", "root", "20145239", "dwc5239");
  13.  
  14. /* check connection */
  15. if ($mysqli->connect_errno) {
  16. printf("Connect failed: %s\n", $mysqli->connect_error);
  17. exit();
  18. }
  19. echo "connection ok!";
  20. /* Select queries return a resultset */
  21. if ($result = $mysqli->query($query_str)) {
  22. if ($result->num_rows > 0 ){
  23. echo "<br> Wellcome login Mr/Mrs:{$uname} <br> ";
  24. } else {
  25. echo "<br> login failed!!!! <br> " ;
  26. }
  27.  
  28. /* free result set */
  29. $result->close();
  30. }
  31.  
  32. $mysqli->close();
  33.  
  34. ?>

root:MySQL的用户名

20145239:登录密码

dwc5239:数据库的库名

开头两行代码使用post而不是get,记得sql语句是从5239table里比较数据。

  1. $uname=($_POST["username"]);
  2. $pwd=($_POST["password"]);

把html里的action填写上login.php,直接跳转。

大功告成!快来测试一下,在浏览器输入localhost:5239/test5239.html。

在登录页面中输入数据库中存有的用户名和密码并点击登录进行用户认证,如果登录成功,如下所示。

登陆失败时,如下显示。

SQL注入

  SQL注入是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
简单地说,SQL注入的产生原因通常是将用户输入的字符串,当成了 “sql语句” 来执行。

在账户输入框中输入' or 1=1#,密码随便敲。

合成语句select * from zn where username='' or 1=1#' and password=''

#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆。

在php脚本里,把if ($result = $mysqli->query($query_str))改为$result = $mysqli->multi_query($query_str)

实现执行多个sql语句,便可以通过SQL注入将用户名和密码保存在数据库中。

输入如下命令。相当于SELECT * FROM 5239table WHERE username='';、insert into 5239table values('lsj','5240','17888811781');

其实我当时是失败了。后来我使用了罗天晨同学的php代码,注入成功了,具体可以参照她的博客以及代码托管:http://www.cnblogs.com/alovera/p/6740640.html

用注入的信息登陆一下,成功了。

XSS攻击测试

  XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

在用户名下输入<img src="111.png" />20145239</a>,密码随便敲。

登陆后,它会显示/var/www/html目录下的那张图片。

20145239杜文超《网络对抗》- Web基础的更多相关文章

  1. 20145239杜文超《网络对抗》- Web安全基础实践

    20145239杜文超<网络对抗>- Web安全基础实践 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  2. 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入

    20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...

  3. 20145239杜文超《网络攻防》- MSF基础应用

    20145239杜文超<网络攻防>- MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit:实现攻击行为的主体,但没有载荷只 ...

  4. 20145239 杜文超 实验四 Android开发基础

    20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...

  5. 网络对抗——web基础

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

  6. 20145239杜文超 实验五 Java网络编程

    20145239 实验五 Java网络编程 实验内容 组队,一人服务器,一人客户端. 下载加解密代码,先编译运行代码,一人加密一人解密,适当修改代码. 然后集成代码,一人加密后通过TCP发送,加密使用 ...

  7. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  8. 20145239杜文超 《Java程序设计》第8周学习总结

    20145239 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logg ...

  9. 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

随机推荐

  1. 第一百八十四节,jQuery-UI,验证注册表单

    jQuery-UI,验证注册表单 html <form id="reg" action="123.html" title="会员注册" ...

  2. 嵌入式开发之赛灵思 xilinx Zynq芯片简介---Zynq-7000 EPP (XC7Z010 and XC7Z020)

    (1)企业简介 作为DSP 和视频应用领域的头号 FPGA 供应商,赛灵思致力于通过其目标设计平台提供业内领先的 DSP 开发工具.方法.IP 和技术支持.赛灵思面向 DSP 的目标设计平台将这些元素 ...

  3. Android-ViewPagerIndicator框架使用——Circle

    前言:Circle适用于应用新功能的展示页和商品的多张图片的展示功能. 1.定义布局文件:SampleCirclesDefault中添加了一个布局:simple_circles. 布局中定义一个Lin ...

  4. python_selenium之第一个自动化脚本

    python_selenium之第一个自动化脚本 上一节介绍了xpath的使用,接下来完成第一个自动化脚本 一.步骤: 1. 这里使用火狐浏览器,首先打开火狐浏览器 2. 使浏览器窗口最大化 3.输入 ...

  5. Unity3d NGUI UICheckbox

    单选按钮: 一,常用属性: 1,CheckSprite:选中后,才显示的Sprite,即为“选中”状态; 2,Starts Checked:true,一开始就显示“选中”状态; 3,RadioButt ...

  6. IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

    本文转载至 http://blog.csdn.net/xunyn/article/details/8064984   原文地址http://www.189works.com/article-89289 ...

  7. Cocos2d-x Lua中实例:特效演示

    下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜 ...

  8. GridView中给DropDownList动态绑定数据,及选择列表值后自动更新数据库

    protected void sgvFile1_RowDataBound(object sender, GridViewRowEventArgs e) { DropDownList ddlAM = ( ...

  9. ECMAScript6箭头函数ArrowFunction"=>"

    一.说明 ECMAScript6可以用箭头"=>"定义函数.x => x * x或(x) => {return x * x;}与匿名函数function(x){r ...

  10. 利用Hibernate注解生成表

    转自:http://blog.csdn.net/madison__/article/details/55677099 Hibernate4注释 @Entity(name = "tbl_use ...