20155321 《网络攻防》 Exp8 Web基础

20155321 《网络攻防》 Exp8 Web基础

基础问题回答

  • 什么是表单?
  • 表单是主要负责数据采集功能。主要是以下三个部分构成:
    • 表单标签:包含处理表单数据所用的程序的URL以及数据提交到服务器的方法
    • 表单域:包含文本框、密码框、多行文本框、复选框、单选框、下拉选择框框等
    • 表单按钮:包含提交、复位和其他按,用于将数据传送到服务器上的或取消输入。
  • 浏览器可以解析运行什么语言?
    • 浏览器肯定可以处理HTML/CSS,但对于JS脚本则可以调用JS脚本引擎进行处理
  • WebServer支持哪些动态语言?
    • 最常用的三种动态网页语言ASP、JSP和PHP都可以被支持。

实验内容

环境配置
  • 使用netstat -aptn查看80端口是否被占用,发现我的电脑的80端口未被占用,也可以把这些用不到的进程先kill掉
    1071532-20180513094511061-1800867369.png
  • 如果空闲就用apachectl start开启Apache,然后再次用netstat -aptn可以发现有80端口已被占用了
    1071532-20180513095153950-499401088.png
  • 打开浏览器,输入网址localhost查看apache是否可用,发现没有问题
    1071532-20180513103536358-206745857.png
前端编程
  • 使用cd /var/www/html/var/www/html目录下编辑lrt5321.html
    1071532-20180513111928152-1613191743.png
  • firefox浏览器中输入网址localhost/lrt5321.html打开该网页
    1071532-20180513103754098-542878586.png
  • 此时Submit也会跳转,但是跳转的页面是找不到的
    1071532-20180513103944506-1869285716.png
PHP测试
  • 新建并编写一个PHP测试文件vi /var/www/html/Login.php
    1071532-20180513110214716-1034528234.png
  • 在浏览器上输入网址localhost/test.php,可以看见如下界面,测试成功
    1071532-20180513110257249-200075875.png
javascipt
  • 使用javascipt修改之前lrt5321的代码了,完善Form表单,代码如下所示
    1071532-20180513113006430-108114348.png
  • 在浏览器上测试,如下图所示
    1071532-20180513112229394-2025268517.png
    1071532-20180513112251107-1988392520.png
MySQL
  • 输入命令/etc/init.d/mysql start开启sql服务
    1071532-20180513115737748-1993810347.png
  • 输入命令mysql -u root -p用账号root登录
    1071532-20180513123600866-1716803221.png
  • 输入命令show databases;查看基本信息
    1071532-20180513195818231-1782400103.png
  • 关于修改密码可以按照如下图所示进行
    • use mysql;,选择mysql数据库
    • select user, password, host from user;,查看数据库的相关信息
    • 输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';更改密码
    • flush privileges;进行更新
      1071532-20180513200410009-2099960459.png
  • 输入命令create database lrt 建立一个数据库,输入命令use lrt使用这个数据库
    1071532-20180516111851785-17913558.png
  • 输入命令create table lrttable (username VARCHAR(20),password VARCHAR(20));建立一个数据表,再输入命令show tables查看当前的数据表
    1071532-20180516111757440-1755113213.png

  • 输入insert into lrttable('lrt','lrt20155321');添加数据库的信息
    1071532-20180516111033240-367046190.png

  • 在MySQL中增加新用户,使用grant select,insert,update,delete on 数据库.* to 用户名@localhost identified by "密码";指令是将对某数据库的所有表的select,insert,update,delete权限授予某用户
  • 之后用新的用户进行登录即可成功
    1071532-20180516111359078-1860224121.png

Web后端
  • 再次修改lrt5321.html文件,编写登录网页
<html>  
<body>           
<table>  
    <form method ="POST" action="Login.php" name="Login"  >  
    <tr>  
    <td>user</td>  
       <td><input type="text" name="username"  size="100" maxlength="100" onfocus="if (this.value=='Your name') this.value='';" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td>password</td>  
  <td><input type="password" name="password" size="100" maxlength="100" onfocus="if (this.value=='Your password') this.value='';" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td><input type="checkbox"  value="1">auto login</td>  
    </tr>     
    <table>  
    <tr>  
        <td><input type="submit"  value="Login" onClick="return validateLogin()"/></td>  
            <td><input type="reset"  value="reset" /></td>  
        </tr>
    </table>    
    </form> 
</table>   
 
<script language="javascript">  
    function validateLogin(){  
        var sUserName = document.Login.username.value ;  
        var sPassword = document.Login.password.value ;    
        if ((sUserName =="") || (sUserName=="Your name")){  
            alert("user name");  
            return false ;  
        }  
       
        if ((sPassword =="") || (sPassword=="Your password")){  
            alert("password!");  
            return false ;  
        }  
    
    }   
</script>  
</body>  
</html>  
  • 再修改PHP文件,如下

<?php
$uname=($_POST["username"]);
$pwd=($_POST["password"]);
$query_str="select * from lrttable where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "linruting", "19970728", "lrtt");

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!";

if ($result = $mysqli->multi_query($query_str)) {
    if ($result->num_rows > 0 ){
        echo "<br> Welcome login Mr/Mrs:$uname <br> ";
    } else {
        echo "<br> login failed!!!! <br> " ;
    }
    $result->close();
}
$mysqli->close();
?>
  • 在浏览器输入127.0.0.1/lrt5321.html即访问自己的登录界面
    1071532-20180516112219780-928070476.png
SQL注入
  • 在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为
    select * from lrttable where username='' or 1=1#' and password=''
    1071532-20180516112410515-937890068.png

  • 另外,还可通过SQL注入将用户名和密码保存在数据库中,但是要将if ($result = $mysqli->query($query_str))
    改成if ($result = $mysqli->multi_query($query_str))即实现执行多个sql语句,接着在用户名中输入';insert into zxtable values('xx','53212');#
    拆开来看就是SELECT * FROM zxtable WHERE username='';、insert into zxtable values('xx','5321',);,接着登录,会显示登录失败,但是再去查数据库发现:
    1071532-20180516112702167-1180401805.png
  • 然后我们就可以再登录成功了。。。

XSS攻击
  • XSS又叫跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的
  • 在用户名中输入/var/www/html下的图片,再登录即可查看图片
    1071532-20180516112909836-1909726984.png

实验总结与体会

  • 总体而言,在有学长学姐的博客指导下,还是完成了本次实验。通过本次实验,让我重新复习了上学期网络安全编程的相关内容,虽然在实验的过程中,也因为代码的一些细节问题以及数据库中的一些操作被卡住了,但是最终还是通过自己不断地尝试解决了,在解决的过程中也对这方面的知识有了更深的理解,个人感觉还是有收获的。

转载于:https://www.cnblogs.com/rafell/p/9045720.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值