实验选择:主机A:Seed(222.28.136.138);主机B:Metasploitable ubuntu(222.28.136.171);主机C:win2K(222.28.136.85);
BC之间进行正常通讯,A做为攻击机php
主机A经过ping其余主机,能够获得一个路由信息表:
选择netwox进行arp欺骗
wireshark抓取tcp包:
html
使用主机A对B实施攻击,其原理在于A向B发送大量半链接的TCP请求,会填满B的网络缓存队列,致使B再也不相应正常请求,以达到B网络服务瘫痪的目的。
使用以下命令:
同时,可利用Wireshark工具抓取数据包查看:
mysql
目标是找到方法来利用SQL注入漏洞实施攻击,并经过掌握的技术来阻止此类攻击的发生。web
一、SQL语言sql
结构化查询语言(Structured Query Language),简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。数据库
常见SQL语句apache
二、SQL注入编程
SQL注入:SQL注入能使攻击者绕过认证机制,彻底控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎全部的Web应用在后台都使用某种SQL数据库。跟大多数语言同样,SQL语法容许数据库命令和用户数据混杂在一块儿的。若是开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不只能向Web应用输入数据,并且还能够在数据库上执行任意命令了。ubuntu
SQL注入原理讲解vim
三、SQL注入危害
四、环境搭建
启动mysql:sudo mysqld_safe
以后,另启窗口,启动Apache:sudo service apache2 start
并配置DNS:sudo vim /etc/hosts
按i进入编辑模式,编辑文件;编辑完成后按Esc退出编辑;完成后使用 :wq 保存并退出。
配置网站文件:sudo vim /etc/apache2/conf.d/lab.conf
重启服务sudo service apache2 restart
访问测试:http://www.sqllabcollabtive.com
关闭php配置策略:
访问:www.sqllabcollabtive.com;当咱们知道用户而不知道到密码的时候,咱们能够怎么登录?
查看登录验证文件:sudo vim /var/www/SQL/Collabtive/include/class.user.php
咱们能够构造一个语句,在不知道密码的状况下登录:
修改完后重启一下服务器.
咱们在$user后面加上) # 这样就会只验证用户名,后面的会被#注释,咱们就能够绕过密码直接登陆:
Collabtive平台中能够更新用户信息,咱们要实现经过本身的用户去修改别人的用户信息;
访问用户编辑连接:http://www.sqllabcollabtive.com/manageuser.php?action=editform&id=1
在Collabtive web应用程序中,若是用户想更新他们的我的资料,他们能够去个人账户,单击编辑连接,而后填写表格以更新资料信息。在用户发送更新请求到服务器,一个UPDATE SQL语句将建造在include/class.user.php。这句话的目的是修改用户表中的当前用户的配置信息。
有一个在这个SQL语句中的SQL注入漏洞;sudo vim /var/www/SQL/Collabtive/include/class.user.php
咱们能够找到以下的代码
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的位置是存在注入漏洞,原理同lab1。
这样咱们就能够越权来修改其余用户的信息及密码;咱们使用任意用户,如: bob bob 进行登陆;
在编辑用户的位置:user 填 ted 用户;
Company 处填:
', `pass` = '9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684' WHERE ID = 4 # ' 注:这里的 9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684 就是pass的md5值;
点击修改,而后咱们退出当前用户,使用ted用户登陆,这个时候ted用户的密码应该是pass;
视频学习(新增/累计) | 教材学习 | 博客量(新增/累计) | |
---|---|---|---|
目标 | 34个视频 | 12章(网络攻击技术与实践) | |
第一周 | (实验楼学习) | (实验楼学习) | 1/1 |
第二周 | 5/5 | 第一、2章 | 1/2 |
第三周 | 5/10 | 第3章 | 1/3 |
第四周 | 5/15 | 第4章 | 1/4 |
第五周 | 5/20 | 第十一、12章 | 2/6 |
第六周 | 5/25 | 第五、6章 | 1/7 |
第七周 | 5/30 | 第7章 | 1/8 |
第八周 | 5/35 | 第8章、实验一 | 1/9 |
第九周 | 3/38 | nmap实验 | 1/10 |
第十周 | 课本实验+实验楼学习 | 课本实验+实验楼学习 | 1/11 |
第十一周 | 课本实验+实验楼学习 | 课本实验+实验楼学习 | 1/12 |