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