20159302《网络攻击与防范》第六周学习总结

本节学习的目标是针对seed环境下的网站进行sql注入攻击

一、环境配置

在本次实验过程中,我们需要三样东西:Firefox浏览器、Apache、phpbb网站。

1.运行Apache。在命令行下输入  sudo service apache2 start .如下图:

2.测试网站运行环境,由于在seed环境下已经提前安装好了Apache+mysql+php的环境。因此只需要打开网站地址即可测试网站的运行状况。在地址栏输入http://www.sqllabmysqlphpbb.com,便可以正常访问此网站。如图:

测试可知,该网站能够正常的访问。

3.本网站默认的DNS解析式解析到本机的,为了便于其他机器能够访问该网站,需要修改配置文件,文件路径/etc/hosts.将原来的映射到127.0.0.1的地址改为本机的ip地址。

其中ip地址使用ifconfig命令可以查询到。代换结果如下所示:

在此过程中,遇到的问题是hosts文件由于权限问题不能正常的保存,因此需要使用更改文件权限的命令去设置hosts文件权限。在此我使用的是:sudo chmod 777 /etc/hosts。在更改文件权限之后,才能正常的保存文件。

4.php配置文件中默认是自动开启对抗sql注入机制的,因此需要将magic_quotes_gpc = On字段改为off。这样才能够正常的使用sql注入方法。这个目录下的文件同样也存在权限问题,也需要使用该更目录权限名利。在此默认的我都是使用chmod77 拿到所有的权限的。

5.重启Apache,命令为 sudo service apache2 restart。

6.针对select语句进行攻击。

在登录界面,由于sql语句存在不完整性验证。用户键入用户名和密码之后,login.php会将传送过来的数据与mysql数据库中的username和user_password字段相比较,如果匹配成功则成功登录。与其他的web应用程序一样,php程序使用sql语言与背后的数据库交互。

具体的操作步骤是在输入用户名的登录框内输入:ted'OR'1'='1'。

同样的,在update语句中也是存在相应的漏洞。

不过在理论上,这个语句是成立的,但是在具体的实施过程中遇到了问题。在输入相应的sql注入语句后,并不能成功的进行注入测试。

二、存在的问题

在本节的学习中,关于sql注入的理论性知识都能理解并掌握,但是存在最大的问题就是在实际的操作过程中,不能正确的实施攻击。在输入注入语句之后,页面返回输入用户名不正确的提示,需要重新输入等信息。

三、问题的解决方法

方法一:针对sql注入的情况可以将magic_quotes_gpc改为on设置,从而能够正常避免非法输入。

方法二:可以使用php自带的函数addslashes()来避免特殊字符。

方法三:使用 mysql_real_escape_string 避开特殊字符。

 

原文地址:https://www.cnblogs.com/yfsun/p/5375720.html