欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

手工注入基础-MySQL注入流程

来源:WhiteCellClub 作者:佚名 时间:2016-06-28 TAG: 我要投稿

 背景:最近很多小伙伴问一些SQL注入很基础的问题,所以就想写一篇基础文章进行科普。

  1. 什么是SQL注入
  2. SQL注入怎么产生的?
  3. 如何进行SQL注入

什么是SQL注入

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL+注入,可以理解为数据库操作语句的注入,也可以说是构造SQL查询语句对数据库进行查询。

SQL注入是怎么产生的?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
if( isset( $_REQUEST[ 'Submit' ] ) ) {
    // 获取GET请求Submit参数的值,如果Submit参数的值不为空(isset判断),则进入if条件为true
    $id = $_REQUEST[ 'id' ];
        //获取GET请求id参数的值,没有过滤,没有过滤,没有过滤!
    // Check database
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
        /*进行语句拼接,组合成SQL查询语句,如GET参数的值为1,则语句为:
         *SELECT first_name, last_name FROM users WHERE user_id = '1';
         *这里不得不提一句,有些小伙伴不明白什么是整数型注入(数字型)和字符型注入
         *可以看到WHERE后面的user_id的值是有单引号的,在程序语言中,有引号一般是代表字符或字符串
         *没有单引号则是整数型,如:
         *SELECT first_name, last_name FROM users WHERE user_id = 1;*/
 
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );
 
        //mysql_query函数进行MySQL语句查询,die() 函数输出MySQL查询错误的信息,并退出当前脚本。
 
' );
 
    //获取返回结果集中行的数目
    $num = mysql_numrows( $result );
    $i   = 0;
        //如果$num的数值大于$i=0的值,则进行while循环
    while( $i &amp;amp;lt; $num ) {
        // 获取查询结果
        $first = mysql_result( $result, $i, "first_name" );
        $last  = mysql_result( $result, $i, "last_name" );
 
        // Feedback for end user
        $html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
 
";
 
        // Increase loop count
        $i++;
    }
        //关闭数据库连接
    mysql_close();
}
 
?>

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载