• SQL Injection(SQL注入漏洞)


    审计前准备:

    1、安�php程序(推荐phpStudy)

    2、高亮编辑器(推荐 Sublimetext Notepad++)

    3、新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的

    ######################

    $_SERVER 
    $_GET 
    $_POST 
    $_COOKIE 
    $_REQUEST 
    $_FILES 
    $_ENV 
    $_HTTP_COOKIE_VARS 
    $_HTTP_ENV_VARS 
    $_HTTP_GET_VARS 
    $_HTTP_POST_FILES 
    $_HTTP_POST_VARS 
    $_HTTP_SERVER_VARS 
    ######################
    **********************************************************************************************

    审计方法:

    1、SQL Injection(SQL注入漏洞)

    作为危害和严重性都身居第一的漏洞不得不先说说它的审计方法;


    Example 1:

    #index.php

    <?php 
    $id= $_GET['id']; 
    $query= "SELECT * FROM users WHERE id= ' “ .$id." ;" 
    ... 
    ?> 

    上面一段代码翻译过来等同于下面这句话:

    index.php?id=1+UNION+SELECT+1,@@version,3,4,5+from+users/* 

    Example 2:

    #login.php
    <?
    #Login.php(hacklele)#
    $user = $_POST['user'];
    $pass = $_POST['pass']; 
    $link = mysql_connect('localhost', 'root', 'pass') or die('Error: '.mysql_e rror()); 
    mysql_select_db2881064151("sql_inj", $link); 
    $query = mysql_query("SELECT * FROM sql_inj WHERE user ='".$user."' AND pas s ='" .$pass. "'",$link);
    if (mysql_num_rows($query) == 0) {
    echo"<scripttype="text/javascript">window.location.href='index.html';</sc
    ript>";
    exit; 

    $logged = 1;
    ?>
    当用户(可能为攻击者)发送$_POST['user'] , $_POST['pass']给 login.php时,这 些变量直接存储在SQL请求命令中。如果攻击者发送:

    $user = 1' OR '1' = '1

    $pass = 1' OR '1' = '1

    将会绕过login.php的登陆验证,读者当注意此类代码。

  • 相关阅读:
    教你删除Linux中这些因特殊字符命名无法删除的文件
    xtrabackup进行mysql数据库备份、还原
    Redis示例配置文件
    Docker 的基本概念和操作
    Vue项目目录结构
    Vue前端项目搭建及运行(mac系统)
    编辑vue项目后,运行结果却不变
    如何在 IDEA 中创建并部署 JavaWeb 程序
    听说你对 JavaScript 中的输出挺熟?
    js 常用字符串截取
  • 原文地址:https://www.cnblogs.com/cbryge/p/6217834.html
Copyright © 2020-2023  润新知