欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

limit后的注入点(Extractvalue语句用来返回报错信息)

程序员文章站 2022-07-04 09:40:05
首先,看一下标准的select语句:SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr .....

首先,看一下标准的select语句:

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name' export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

在limit后有注入点,则有两种可能,因为limit后只有PROCEDURE和INTO语句,因此考虑PROCEDURE语句的注入。MySQL默认可用的存储过程只有 ANALYSE;
一般注入会用到Extractvalue语句,这个语句是用来查询xml文件信息,有两个参数;
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容(数据库里的内容显示出来),而这个非法的内容就是我们想要查询的内容。
查询时候,只要第二个参数的位置格式为 /xxx/xx/xx/xx ,即使查询不到也不会报错;

concat(var1,var2,...//连接两个或多个字符串

扩展:(在爆破数据库时,这些字段可以用来爆库、爆表、爆字段(列))

select schema_name
select table_name
select column_name

本文地址:https://blog.csdn.net/qq_37735779/article/details/108984368