PHP代码审计 08 SQL 注入

本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程

PHP 代码审计博客目录

1. 简介

  1. 什么是 SQL 注入

    SQL 注入攻击指的是通过构建特殊的输入作为参数传入Web 应用程序,而这些输入大都是SQL 语法里的一些组合,通过执行SQL 语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

  2. 防御

    1. 开启gpc
    2. mysql_real_escape_string
    3. addslashes
    4. 关键字过滤

2. DVWA 漏洞利用

  1. 源代码

     ' . mysql_error() . '
    ' ); $num = mysql_numrows($result); $i=0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '
    '; 
                 echo 'ID: ' . $id . '
    First name: ' . $first . '
    Surname: ' . $last; echo '
    '; $i++; } } } ?>
  2. DVWA 中用到的防御函数

    1. stripslashes() 函数

      stripslashes() 函数删除由 addslashes() 函数添加的反斜杠

       语法:
       echo stripslashes("Who\'s Bill Gates?");
      
    2. mysql_real_escape_string() 函数

      转义 SQL 语句中使用的字符串中的特殊字符。
      下列字符受影响:

       \x00
       \n
       \r
       \
       '
       "
       \x1a
      

      如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

       语法:
       mysql_real_escape_string(string,connection)
      

你可能感兴趣的:(代码审计)