20145329 《网络对抗技术》Web基础

实践目标

  • Web前端HTML
    能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

  • Web前端javascipt
    理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。

  • Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

  • Web后端:编写PHP网页,连接数据库,进行用户认证

  • 最简单的SQL注入,XSS攻击测试


实验后回答问题

什么是表单
  • 表单:可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁。 表单包括两个部分:一部分是HTML源代码用于描述表单,另一部分是脚本或应用程序用于处理提交的信息,搜集表单数据。表单由文本域、复选框、单选框、菜单、文件地址域、按钮等表单对象组成,所有的部分都包含在一个由标识符标志起来的表单结构中,种类有注册表、留言薄、站点导航条、搜索引擎等。
浏览器可以解析运行什么语言
  • 超文本标记语言:HTML

  • 可扩展标记语言:XML

    脚本语言
  • ASP全名Active Server Pages,是一个WEB服务器端的开发环境,采用脚本语言Java script作为自己的开发语言。

  • PHP是一种跨平台的服务器端的嵌入式脚本语言,借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。

  • JSP是Sun公司推出的新一代网站开发语言,JSP(Java Server Page)JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

WebServer支持哪些动态语言
  • 常用的有ASP语言,PHP语言和JSP语言

实验总结与体会

  • 实验时候各种手抖,输错一个符号或漏一个字符就出现错误,一个实验做好多遍,心累啊。html网页是与用户交互的界面,需要做到界面友好美观,同时也要注意每个句子的语法,特别是按钮提交到后台的语句action,javascript实现与提交到后台连接操作,php实现后端数据库操作。本次实验实现简单的web前端与后台的交互操作,并对数据库设计的漏洞进行简单的攻击,有利于更好的学习数据库。

实践过程记录

Web前端HTML

安装、启停Apache

  • 设置apache监听端口为80,并开启
    886473-20170509083304379-356212209.jpg

  • 浏览器上输入localhost:80,页面跳转到上次克隆的网页
    886473-20170509083354910-186379073.png

一个简单的含有表单的HTML

  • 在apache工作目录cd /var/www/html下新建一个20145329.html文件,编写一个html网页
    886473-20170509083431519-1754355784.jpg

  • 它在win8本机浏览器上本来是这个样子的
    886473-20170509083538332-1680062654.png

  • 但是到了kali浏览器上(打开浏览器访问:localhost:8088/20145329.html,成功出现如下界面)不识别背景图片路径以及编码方式不同,就变成了这个样子
    886473-20170509083816285-417628516.png

  • 可以通过alt->view->Text Encoding->Unicode修改编码方式,但是为了方便还是使用英文吧
    886473-20170509084355613-517083513.png

  • 随意输入字符到用户名和密码,网页没有连接后台,所以login后出现"Not Found"
    886473-20170509084432926-589913500.png

  • JavaScript


        <html>
    <head>
        <meta charset ="UTF-8">
        <script type="text/javascript">
        (function disp_alert()
        {
        
            var sUserName = document.form.username.value ;  
            var sPassword = document.form.password.value ;    
            if ((sUserName =="") || (sUserName=="Your name")){  
                alert("Please input the username!");  
                return false ;  
            }  
           
            if ((sPassword =="") || (sPassword=="Your password")){  
                alert("Please input the password!");  
                return false ;  
            }  
        }
        </script>
    </head>
    <body>
    <form name='form' class="form" method='get' action='login.php' >
    <input type="text" placeholder="Username" name='username'>
    <input type="password" placeholder="Password" name='password'>
    <button type="submit" onclick="disp_alert()"  value="submit" />submit</button>
         </body>
        </html>
  • 验证用户名、密码的规则
    886473-20170509084552676-1188234080.png

Web后端

php测试

  • 代码

    <?php
    echo ($_GET["A"]);
    include($_GET["A"]);
    echo "hello!
    ";
    ?>
    20145329

  • 在浏览器中输入localhost:80/5329test.php,显示
    886473-20170509084702535-1943605060.png

mysql

  • 安装、启动MySQL:/etc/init.d/mysql start,并以root身份登录:mysql -u root -p

  • 886473-20170509084815269-1648711996.jpg

  • 显示各个数据库名称,并显示mysql库中已有的用户名、密码与权限
    886473-20170509084953879-1268436314.png
    886473-20170509085058222-421558334.jpg

  • 修改密码
    886473-20170509085322707-548000508.png

  • 更新权限
    886473-20170509085406988-1727637347.png

  • exit退出当前用户并重新使用新密码进入

  • 创建用户
    886473-20170509085645051-1943602149.jpg

  • 建库
    886473-20170509085755254-1239612537.png

  • 建表
    886473-20170509123021785-509468569.png

  • 往新建的库里面插入数据
    886473-20170509123115504-1986305114.png

Web后端

PHP网页

  • 在/var/www/html文件夹下输入leafpad login.html,编写登录网页,在同样的目录下输入leafpad login.php,通过php连接数据库

  • 连接数据库,括号里面依次为主机、mysql用户、密码、数据库名称
    886473-20170509123238785-1211822439.jpg

  • 进行用户认证:在浏览器中输入localhost:80/login.html访问登陆页面
    886473-20170509123621816-456562599.png

  • 登录失败,请教了棒棒哒昊阳同学,是因为新建的表单里面我的密码是经过hash的,而我的php代码里面取得我输入的密码提交到数据库对比的时候是没有经过hash的,所以输入对的密码也会比对失败,不能登录成功,修改php代码,把输入密码框里的密码做一个hash处理就可以比对成功修改部位如下:
    886473-20170509124320269-1368304662.png

  • 输入正确用户名和密码,登录成功
    886473-20170509123350894-263700170.png

  • 用户名和密码错误,登录失败
    886473-20170509124253926-2077826408.png

  • 给登录成功一个welcome的页面,在/var/www/html目录下新建一个welcome.php,代码参照LTC同学的,在login.php就加入下列代码
    886473-20170509124353504-945029994.png

  • 登录成功后跳转到如下界面
    886473-20170509124411269-76650920.png

最简单的SQL注入

  • 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

  • 用户名中输入' or 1=1#永真式,密码随意
    886473-20170509124457488-183289958.png

  • 登陆成功
    886473-20170509124517801-274530504.png

  • 通过SQL注入将用户名和密码保存在数据库中'insert into users(userid,username,password,enabled) values(2,'29',password("123456"),"TRUE");#
    翻译过来就是SELECT * FROM users WHERE username='';insert into users (userid,username,password,enabled) values(2,'29',password("123456"),"TRUE"");
    ($result = $mysqli->query($query_str))改为$result = $mysqli->multi_query($query_str)实现可以执行多条SQL语句
    886473-20170509124614144-2026119591.png

  • 用户名输入sql语句,密码为空,登录显示
    886473-20170509124657738-2050958027.png

  • 数据库中查询有新的语句加入
    886473-20170509124720207-1840353074.png

  • 返回登陆界面,使用刚刚插入的用户名和密码登录成功
    886473-20170509124743176-1352902498.png

XSS攻击测试

  • 登录界面用户名输入5329.jpg
    886473-20170509124804582-394671571.png

  • 登录出现下图
    886473-20170509124822988-132391140.jpg

转载于:https://www.cnblogs.com/jdy1453/p/6822382.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值