zoukankan      html  css  js  c++  java
  • 如何判断是字符型注入还是数字型注入

    字符型注入和数字型注入区别#

    通常 Sql 注入漏洞分为 2 种类型
    数字型
    字符型
    其实所有的类型都是根据数据库本身表的类型所产生的,在我们创建表的时候会发现其后总有个数据类型的限制,而不同的数据库又有不同的数据类型,但是无论怎么分常用的查询数据类型总是以数字与字符来区分的,所以就会产生注入点为何种类型。

    数字型判断##

    当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:

    select * from <表名> where id = x

    这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

    Url 地址中输入 www.xxx.com/abc.php?id= x and 1=1

    页面依旧运行正常,继续进行下一步。

    Url 地址中继续输入 www.xxx.com/abc.php?id= x and 1=2

    页面运行错误,则说明此 Sql 注入为数字型注入。

    原因如下:

    当输入 and 1=1时,后台执行 Sql 语句:

    select * from <表名> where id = x and 1=1

    没有语法错误且逻辑判断为正确,所以返回正常。

    当输入 and 1=2时,后台执行 Sql 语句:

    select * from <表名> where id = x and 1=2

    没有语法错误但是逻辑判断为假,所以返回错误。

    我们再使用假设法:

    如果这是字符型注入的话,我们输入以上语句之后应该出现如下情况:

    select * from <表名> where id = 'x and 1=1'select * from <表名> where id = 'x and 1=2'

    查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。

    字符型判断##

    当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下

    select * from <表名> where id = 'x'

    这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:

    Url 地址中输入 www.xxx.com/abc.php?id= x' and '1'='1

    页面运行正常,继续进行下一步。

    Url 地址中继续输入 www.xxx.com/abc.php?id= x' and '1'='2

    页面运行错误,则说明此 Sql 注入为字符型注入。

    原因如下:

    当输入 and '1'='1时,后台执行 Sql 语句:

    select * from <表名> where id = 'x' and '1'='1'

    语法正确,逻辑判断正确,所以返回正确。

    当输入 and '1'='2时,后台执行 Sql 语句:

    select * from <表名> where id = 'x' and '1'='2'

    语法正确,但逻辑判断错误,所以返回正确。

  • 相关阅读:
    Linux命令选项及参数解析 getopt() getopt_long() 函数
    找不到文件或程序集名称“DreamweaverCtrls”的解决方法
    #include file 与#include virtual的区别
    用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法
    [ASP.Net]ASP.NET中上传文件
    [.net]"Request.Form出现乱码"的解决方法
    正式进驻博客园
    [ASP.NET] 限制上传文件类型的两种方法(转)
    错误类型:“系统找不到 Microsoft.Office.Interop.Word"
    从客户端检测到有潜在危险的Request.Form 值
  • 原文地址:https://www.cnblogs.com/zztac/p/11355622.html
Copyright © 2011-2022 走看看