2019-2020-2 网络对抗技术 20175236 EXP8 Web基础

时间:2020-05-21 22:54:53   收藏:0   阅读:92

一、基础问题回答

  1. 什么是表单
    • 表单在网页中主要负责数据采集功能
    • 一个表单有三个基本组成部分: 表单标签
    • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等
    • 表单按钮:包括提交按钮、复位按钮和一般按钮.表单按钮可以用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作
  2. 浏览器可以解析运行什么语言
    • 超文本标记语言:HTML
    • 可扩展标记语言:XML
    • 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等
  3. WebServer支持哪些动态语言
    • 比较常用的有ASP语言,PHP语言和JSP语言。

二、实验过程记录

Apache

(一)环境配置

技术分享图片

 

 

 

(二)前端编程

技术分享图片

 

 

 

技术分享图片

技术分享图片

(三)javascript相关

  1. 相关概念:JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
  2. 文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。
  3. 编写验证用户名和密码的规则:(比如用户名和密码不能为空)
function nameText(){
var name= document.getElementByIdx_x ("username");
    var divID= document.getElementByIdx_x ("divName");
    divID.innerHTML="";
    if(name.value==""){
         divID.innerHTML="用户名不能为空";
         return false;
}
}
function passText(){
var pass= document.getElementByIdx_x ("password");
    var divIP= document.getElementByIdx_x ("divPass");
    divIP.innerHTML="";
    if(pass.value==""){
         divIP.innerHTML="密码不能为空";
         return false; 
}
}
}
</script>

 

(四)PHP测试

<?php
    echo ($_GET["A"]);
    
    include($_GET["A"]);

    echo "php page 5236!<br>";
?>

 

技术分享图片

 

 

 

(五)MySQL基础

技术分享图片

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 

CREATE SCHEMA `库表的名称`;
CREATE TABLE `库表的名称`.`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 ‘‘);
- **注意**:此处一定要注意`单引号`和`键盘Esc下面的那个符号`不要写错了!!!
- ![](https://images2018.cnblogs.com/blog/886779/201805/886779-20180511102253315-2001417440.png)

技术分享图片

 

 

 

技术分享图片

 

 

 

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

技术分享图片

技术分享图片

 

 

 

技术分享图片

技术分享图片技术分享图片

技术分享图片

 

 

 

技术分享图片

(七)SQL注入

1.搭建一个网站实现用户登录,这一步已经完成。

2.构造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
    • 因为1=1永远是都是成立的,即where子句总是为真,所以能够成功登录

技术分享图片

技术分享图片

3.或者在用户名框中输入‘;insert into users(userid,username,password,enabled) values(777,‘121212‘,password("121212"),"TRUE");#,在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了,但是得修改一下之前的代码,因为我们之前编的代码中if ($result = $mysqli->query($query_str))这条判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))便能实现执行多个sql语句

技术分享图片

4.接着使用新插入的用户名和密码进行登录,登录成功。

(八)XSS攻击

XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户游览器的控制。
具体来说假如用户提交的数据含有js代码,不做任何处理就保存到了数据库,读出来的时候这段js代码就变成了可执行的代码。一般用户提交的数据永远被认为是不安全的,在保存之前要做对应的处理。

1.输入<img src="5236.JPG" />haha</a>先进行简单的测试

技术分享图片
点击登录就会出现图片5236.JPG的超链接

技术分享图片

2.我们还可以给出钓鱼网站的超链接实现XSS攻击。

(九)发帖和会话管理的实现

1.这一部分采用了写入文件和读取文件从而实现发帖的方式,核心代码有

    • 将输入的帖子标题和内容写入文件保存
      • file_put_contents(‘data.txt‘,"title:".$title.",content:".$content."\n", FILE_APPEND);
    • 将文件中的数据进行读取,并将/n替换为换行符<br>
      • $content = file_get_contents("data.txt");
      • echo str_replace("\n", "<br>", $content);
    • 在loged.php界面添加一个超链接到test.html界面,即可将之前的登录、会话管理和发帖功能连接起来
      • echo ‘<a href="test.html">start a new post!</a>‘;

2.在浏览器中输入http://127.0.0.1:5236/logIn.php,进行登录:

技术分享图片

3.登录成功后如图所示:

技术分享图片

4.点击start a new post!发帖,进入如下界面:

技术分享图片

 

 

 

5.提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录:

技术分享图片

6.点击CHECK可以查看会话记录:

    • 通过test.php中的file_put_contents(‘data.txt‘,"title:".$title.",content:".$content."\n", FILE_APPEND);代码,可以查看到会把会话记录写进data.txt,但是我点击一次后并没有相关记录的显示,想想可能是权限问题并不能直接在/var/www/html文件夹下生成文件,所以先后执行命令,新建该文件并赋予可操作的最高权限:touch data.txtchmod 777 data.txt即可
    • 再次点击CHECK,看见如下图所示的会话记录:

技术分享图片

三、实验总结与体会

本次实验主要实现的是对于简单网页的攻击,都比较基础,之前的课程中也涉及过一部分,如sql注入、XSS攻击等。以目前实际情况看,没有任何一个网站的会毫无防范任人攻击,一旦做了web安全方面的设计,那么我们的简单攻击手段并没有用处,所以要实现真正的攻击,我们要学的东西还有很多。通过本次实验也提醒了我们web安全设计的重要性,为我们以后的网站搭建提供了很好的参考。

之前我们也学过一些有关html网页编程的例子,但是接触面比较窄,这次实验又让我们系统的接触了web相关的知识,尤其是在做到sql注入和XSS攻击的时候,我觉得网页攻击还是非常可怕的,因为现在的网页很多都会连接这数据库,虽然关于sql注入和xss攻击防不胜防,但是我们在编写html的时候仍必须了解一些防范知识,避免一些低级的攻击。

原文:https://www.cnblogs.com/wff666999/p/12933830.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!