zoukankan      html  css  js  c++  java
  • 20169220 <网络攻防实践> 第十二周实验—SQL注入

    实验环境

    SEED Ubuntu镜像环境配置

    实验需要三样东西,Firefox、apache、phpBB2(镜像中已有):

    • ①运行Apache Server:镜像已经安装,只需运行命令%sudo service apache2 start
    • ②phpBB2 web应用:镜像已经安装,通过http://www.sqllabmysqlphpbb.com访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/
    • ③配置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实现,需要用户输入用户名和密码来通过认证。界面如下


    2.对UPDATE语句的攻击

    • 当用户想要在phpBB2中修改他们的资料时,可以点击Profile,然后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条UPDATE SQL语句。在这条语句中同样有一个SQL注入漏洞,请用它来达到以下目标:在不知道其他人密码的情况下修改其资料。例如:你以Alice登陆,你的目标就是修改Ted的资料信息,包括他的密码。攻击成功后你将可以登陆Ted的账号

    3.对抗SQL注入

    SQL注入漏洞的根本原因是没有将代码和数据区分开。当组建一个SQL语句时,程序(如PHP程序)知道哪个部分是代码哪个部分是数据。不幸的是当SQL语句送往数据库执行时,这个边界被打破,当程序被注入时,SQL解释器看到的边界可能和最初的边界不一样。为了解决这个问题,保持服务端程序和数据库看到的边界一样就十分重要。

    • 使用magic_quotes_gpc避开特殊字符。比如修改/etc/php5/apache2/php.ini的magic_quotes_gpc = On,然后重启Apache
    • 使用addslashes()来避开特殊字符
    • 使用mysql_real_escape_string避开特殊字符
    • Prepare Statement
  • 相关阅读:
    JQuery 获取touchstart,touchmove,touchend 坐标
    js获取可视区大小和页面大小的兼容性写法
    Asp.net MVC4.0自定义Html辅助方法
    无废话版本-Asp.net MVC4.0 Rasor的基本用法
    IE浏览器 下面的文本框,获得焦点后无法输入内容
    C# Log4Net配置
    C#中 ? 和?? 的用法
    工作中的一些问题总结
    JsRender系列-11
    JsRender系列demo-10
  • 原文地址:https://www.cnblogs.com/nirvanakurt/p/6867208.html
Copyright © 2011-2022 走看看