《网络攻防》第11周作业

20169310 2016-2017-2 《网络攻防实践》第11周学习总结

实验一 TCP/IP攻防实验

之前也做过类似实验,可参见《网络攻防》第6周作业
实验环境选用: 主机A:Metasploitable ubuntu(192.168.37.130);主机B:XP(192.168.37.160);主机C:Seed(192.168.37.180)
AB之间进行正常通信,C作为攻击机

1.ARP欺骗

主机A通过ping其他主机,可以得到一个路由信息表:


通过此表,保存了IP地址与对应MAC之间的映射关系,而ARP欺骗就是改变这个表当中的映射关系,以达到欺骗的目的。
这里选用 netwox 工具进行操作,在主机C当中执行以下命令:


这样,我们再去查看主机A的路由信息:


可以发现,信息表中关于主机B的IP地址所对应的MAC地址已经被改成了C的MAC地址,这样A发往B的数据就会被错误指向C了。

2.SYN FLOOD攻击

使用主机C对A实施攻击,其原理在于C向A发送大量半连接的TCP请求,会填满A的网络缓存队列,导致A不再相应正常请求,已达到A网络服务瘫痪的目的。
使用如下命令:


同时,可利用Wireshark工具抓取数据包查看:


确实如我们预想的那样,C向A发送了大量的TCP数据包。

实验二 SQL注入

主要通过实验楼Collabtive系统SQL注入实验课程,学习如何进行SQL注入。

一、实验简介

SQL注入技术是利用web应用程序和数据库服务器之间的接口,把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
SQL注入会带来:
1.非法读取、篡改、添加、删除数据库中的数据。
2.盗取用户的各类敏感信息,获取利益。
3.通过修改数据库来修改网页上的内容。
4.私自添加或删除账号。
5.注入木马等等。

二、实验步骤

实验所用的web应用程序称为Collabtive,禁用Collabtive的若干防护措施,创建了一个容易受到SQL注入攻击的Collabtive版本。
首先可按照实验文档进行环境配置:

1.select语句的SQL注入

打开登录验证文件:

sudo vim /var/www/SQL/Collabtive/include/class.user.php

在375行处,更改为:

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, FROM user WHERE (name = '$user ') #' OR email = '$user') AND pass = '$pass'");

然后重启服务器后,打开登录界面,输入 admin')# ,即可绕过密码登录:


2.update语句的SQL注入

在登录验证文件当中,如下位置:

 function edit($id, $name, $realname, $email, $tel1, $tel2, $company,
              $zip, $gender, $url, $address1, $address2, $state,
              $country, $tags, $locale, $avatar = "", $rate = 0.0)
    {
    $name = mysql_real_escape_string($name);
    $realname = mysql_real_escape_string($realname);

    //modified for SQL Lab
    //$company = mysql_real_escape_string($company);
    $email = mysql_real_escape_string($email);

    // further escaped parameters removed for brevity...

    $rate = (float) $rate;
    $id = (int) $id;

    if ($avatar != "")
        {
            $upd = mysql_query("UPDATE user SET name='$name', email='$email',
                                tel1='$tel1', tel2='$tel2', company='$company',
                                zip='$zip', gender='$gender', url='$url',
                                adress='$address1', adress2='$address2',
                                state='$state', country='$country',
                                tags='$tags', locale='$locale',
                                avatar='$avatar', rate='$rate' WHERE ID = $id");
        }
    else
        {
            // same query as above minus setting avatar; removed for
            // brevity
        }
    if ($upd)
        {
            $this->mylog->add($name, 'user', 2, 0);
            return true;
        }
    else
        {
            return false;
        }
    }

我们会发现​sql语句为:SELECT ID WHERE name=​'$user',并且company的位置是存在注入漏洞。
所以,我们以用户名bob,密码bob登录系统,在用户编辑界面修改信息并保存:
company处填写:

', `pass` = '9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684' WHERE ID = 4 # '
其中,这一串数字是pass的md5值


这样,就拥有了一个名为ted,密码为pass的新账号,可以通过登录进行测试:


可以看到,ted用户登录成功。

面对这些潜在的SQL注入漏洞,可通过默认开启 magic_quotes_gpc 来防御转义特殊字符的使用、避免使用特殊字符、使数据与sql语句分离等方法进行防御。

感想体会

经过本周的学习,主要学习了SQL注入的攻击实现方法,这个方法之前也接触过,此次算是再一次加深了对这个漏洞攻击的理解。

学习进度条

学习目标(本学期)

完成网络攻防课程的学习,完成各种攻防实践操作。

本周完成内容

完成TCP/IP攻防实验与SQL注入实验。

周次 教材学习 视频学习(新增/累计) 博客(新增/累计)
第1周 (实验楼学习) (实验楼学习) 1/1
第2周 第1、2章 5/5 1/2
第3周 第3章 5/10 2/4
第4周 第4章 5/15 1/5
第5周 第11、12章 5/20 1/6
第6周 第5、6章 5/25 1/7
第7周 第7章 5/30 1/8
第8周 第8章 5/35 1/9
第9周 第9、10章 3/38 1/10
第10周 (实验楼学习) (实验楼学习) 1/11
第11周 (实验楼学习) (实验楼学习) 1/12

参考资料

1.Collabtive系统SQL注入实验

posted @ 2017-05-11 09:57  寒冰ice  阅读(440)  评论(1编辑  收藏  举报