zoukankan      html  css  js  c++  java
  • 20169215 2016-2017-2 SQL 注入实验

    20169215 2016-2017-2 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”

    实验任务

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

    登录注入

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

    SELECT user_id,userna me,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
    }
    

    容易发现只要在输入用户ID的时候做些手脚,就能做到无密登录。ID处输入ted '#,就可以以任意密码或者不输入密码登录:

    在通过登录界面注入创建数据库的时候失败了:

    更新用户数据时注入

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

    通过错误的注入,可以发现UPDATE语句的结构:

    分析发现,最后在where user_id = 3;处存在漏洞,只要把user_id修改为其他人的ID号,就可以修改别人的资料甚至密码:

    ted的密码原本是ted,现在被修改为了123456:

  • 相关阅读:
    流程配置中心选不到销售订单新变更单
    python中判断NULL
    BOS的长度范围(字符)
    业务对象功能授权无法找到用户权限申请单
    116环境无法上传附件
    审批流XML的岗位存储的值
    solidity语法4——合约(类似面向对象中的Class)
    solidity语法3——全局变量,表达式,控制结构
    solidity语法1——概述
    solidity语法2——类型
  • 原文地址:https://www.cnblogs.com/308cww/p/6888572.html
Copyright © 2011-2022 走看看