zoukankan      html  css  js  c++  java
  • 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 《网络对抗》 WEB基础实践

    实验后回答问题

    一、什么是表单

    表单是一个包含表单元素的区域。用form来定义。

    HTML是静态显示网页的,无法跟服务器进行交互,所以表单就是跟服务器进行交互的一种方式,用来搜集用户的输入。打个比方,我们在很多网站上登录时,登录框就是表单构成的。

    表单能包含input元素,比如文字段、复选框、单选框、提交按钮等等。表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。

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

    可以运行超文本标记语言HTML、可扩展标记语言XML以及一些像ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等的脚本语言。

    三、WebServer支持哪些动态语言

    支持PHP、JSP等语言

    实验总结与体会

    本次实验使用表单编写了一个简单的登录界面,然后通过编写一个php让页面的前端和数据库连接起来。我们也通过mysql来建立一个表单,在表单中添加了用户名和密码。整个过程让我大致理解了一个网页是怎样跟服务器建立起连接,又是怎么完成用户的登录的。

    在完成一个简单的登录页面的构造之后,尝试了对这个简单页面的SQL攻击。SQL攻击简单来说就是利用漏洞,通过在用户名上注入攻击语句,让它把这个语句当成sql语句执行,完成攻击。XXS的攻击方法和SQL类似,虽然不能成功登陆,但是可以把文件路径下的某个图片加载出来。

    让我印象比较深刻的是利用SQL攻击可以在数据控中伪造一个用户名和密码,可以利用这个用户名和密码成功登陆。在这种简单的攻击方法面前,我们的网页都显得如此脆弱,很难想象数据信息的丢失和被盗现象有多严重。

    实践过程记录

    一、Web前端HTML:

    使用apachectl start命令来开启Apache。上次实验没关,所以显示已经开启了

    查看80端口是谁在占用。可以看出来,是Apache在使用80端口,就不用重新设置了。

    打开localhost:80,可以看到之前克隆的淘宝的网页

    先在HTML文件夹下新建一个html,测试一下。因为只是一个前端网页,还没有连数据库,点登录会报错

    二、Web前端javascipt:

    JavaScript验证用户名、密码的规则:

    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>
    

    JavaScript是一种直译脚本语言,是浏览器的一部分,广泛用于客户端,最早用于HTML网页,用来给网页增加动态功能

    DOM可以看做是节点,可以使用 Javascript 语言来操作 DOM 以改变网页。为了改变网页,你必须告诉 Javascript 改变哪一个节点。这就是操作 DOM。

    三、Web后端:MySQL基础:

    首先,我们要开启MYSQL

    然后输入mysql -u root -p,接下来输入密码,进入数据库

    因为初始化的密码是p@ssw0rd,我们要对这个密码进行修改

    然后在数据库中新建一个名为biaodan的表

    在表中要添加一个用户,输入该用户的用户名(shiyusen)和密码(20144303),以供我们后面登录时使用

    四、Web后端:PHP基础:

    先创建好一个新的PHP,然后对它进行测试

    测试完成后,我们就要编写好前端网页(123.html)和与之相绑定的PHP(123.php)

    使用在数据库中添加的用户名和密码,测试能否正常登录

    然后随便输一个错误的用户名和密码,测试能否正常登录

    五、SQL攻击:

    接下来就到了本次实验的重点环节,对这个页面进行攻击了

    首先,我们在用户名中输入' or 1=1#,密码随便输,发现登录成功了

    这是因为相当于是用了查询语句select * from biaodan where username='' or 1=1#' and password=''。#是个注释符,后面的内容都会消去。1=1这个条件有是恒成立的,所以不管密码输什么都能登录成功

    输入 ';insert into users(userid,username,password,enabled) values(2,'gongji',password("20144303"),"TRUE");# 可以在数据库中保存输入的用户名(gongji)和密码(20144303)。

    它相当于两条sql指令:

    SELECT * FROM users WHERE username='';

    insert into users(userid,username,password,enabled) values(2,'gongji',password("20144303"),"TRUE");

    然后我们用gongji密码为20144303可以正常登录

    需要注意的是,在输入命令进行攻击之前,要把PHP文件的代码稍作修改。if ($result = $mysqli->query($query_str)) 改成if ($result = $mysqli->multi_query($query_str))。然后在登录之后,再将multi删去,才能成功登录

    六、xxs攻击:

    在var/www/html下添加一个图片4303xxs.jpg

    输入在用户名栏输入<img src="4303xxs.jpg" />20144303</a>,完成攻击

  • 相关阅读:
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(2)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(10)
    CKEditor在asp.net环境下的使用一例
    《Microsoft Sql server 2008 Internals》读书笔记第五章Table(7)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(11)
    千万数据的连续ID表,快速读取其中指定的某1000条数据?
    javascript中的float运算精度
    .Net与Java的互操作(.NET StockTrader微软官方示例应用程序)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(6)
  • 原文地址:https://www.cnblogs.com/20144303sys/p/6820848.html
Copyright © 2011-2022 走看看