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 |