• 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的登陆验证,读者当注意此类代码。

  • 相关阅读:
    C#实现京东登录密码加密POST
    查询SQL Server数据库所有表字段备注
    DataGridView数值列和日期列
    (转)Android 系统 root 破解原理分析
    Dynamics AX 中重点数据源方法
    .NET中Debug模式与Release模式
    DotNetBar的初步使用
    省市区联动小功能
    多余的Using Namespaces或引用会影响程序的执行效率么?
    MSIL指令集
  • 原文地址:https://www.cnblogs.com/cbryge/p/6217834.html
Copyright © 2020-2023  润新知