20169208 2016-2017-2 《网络攻防实践》第十二周学习总结

20169208 2016-2017-2 《网络攻防实践》第十二周学习总结

SQL注入实验

实验描述:

参考资源中的“SQL注入攻击实验.pdf ”, 提交SQL注入成功截图,并加上自己的学号水印。
在本次实验中,我们修改了phpBB的web应用程序,并且关闭了phpBB实现的一些对抗SQL注入的功能。因而我们创建了一个可以被SQL注入的phpBB版本。尽管我们的修改是人工的,但是它们代表着web开发人员的一些共同错误。学生的任务是发现SQL注入漏洞,实现攻击者可以达到的破坏,同时学习抵挡这样的攻击的技术

实验环境:
SEED Ubuntu 镜像
环境配置
实验需要三样东西, Firefox、 apache、 phpBB2(镜像中已有):
(1)运行 Apache Server:镜像已经安装,只需运行命令 %sudo service apache2 start
(2)phpBB2 web 应用:镜像已经安装,通过 http://www.sqllabmysqlphpbb.com 访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/
(3)配置 DNS: 上述的 URL 仅仅在镜像内部可以访问,原因是我们修改了/etc/hosts文件使 http://www.sqllabmysqlphpbb.com 指向本机 IP 127.0.0.1。如果需要在其他机器访问,应该修改 hosts 文件,使 URL 映射到 phpBB2 所在机器的 IP。

关闭对抗措施
PHP 提供了自动对抗 SQL 注入的机制,被称为 magic quote,我们需要关闭它。

  1. 找到/etc/php5/apache2/php.ini
  2. 找到 magic_quotes_gpc = On 这一行
  3. 改为 magic_quotes_gpc = Off
  4. 重启 Apache: ”sudo service apache2 restart”

实验任务:
(1)对 SELECT 语句的攻击
此次任务,你需要通过访问虚拟机内的 URL:www.sqllabmysqlphpbb.com。在进入 phpBB
之前系统会要求你登陆。这个登陆认证由服务器上的 login.php 实现,需要用户输入用户名
和密码来通过认证。界面如下:

用户键入用户名和密码后, login.php 会将它们与 mysql 数据库中的 username 和user_password 字段进行比较,如果匹配就登陆成功。和其他大多数 web 应用程序一样, PHP程序使用 SQL 语言与背后的数据库交互。在 phpBB2 中,下面的语句实现了对用户的认证:

SELECTuser_id,username,user_password,user_active,user_level,
user_login_tries,user_last_login_try
FROMUSERS_TABLE
WHEREusername=‟$username‟ANDuser_password=‟md5($password)‟;
if(foundonerecord)
then{allowtheusertologin}

(2) 对 UPDATE 语句的攻击
当用户想要在 phpBB2 中修改他们的资料时,可以点击 Profile,然后填写表单修改。用户发送修改请求后,会执行 include/usercp_register.php 中的一条 UPDATE SQL 语句。在这条
语句中同样有一个 SQL 注入漏洞。
当用户想要在phpBB2中修改他们的资料时,可以点击Profile,然后填写表单修改。

攻击成功

posted on 2017-06-07 17:32  your_victory  阅读(133)  评论(0编辑  收藏  举报

导航