limit函数的使用

limit有两种方式

1)limit a,b 后缀两个参数的时候(/*参数必须是一个整数常量*/),其中a是指记录开始的偏移量,b是指从第a+1条开始,取b条记录。(这里计数就是从id=1开始的没有从0开始)

2)limit b 后缀一个参数的时候,是直接取值到第多少位,类似于:limit 0,b 。

 

这里以dvwa数据库为例,这里面有两个表,

我们查询users表的数据,

 

 

limit 0,2从0开始读取2条

 

 

 

limit 2,默认和0 2一样

 

 

 

limit 3,2

 

 

 

 

limit是可以用于限制任何数据字段的输出用的,因为对应的字段名有很多列,比如这里user_id有5列

而不能用于查询表的字段是什么来使用,因为就只有一个表叫users,也就是说只有1个数据,见sqli-labs(5)

 

 

 这里查的是表的字段名,而表只有1个,所以不能用limit来设置输出,而且updatxml报错输出是有长度限制的

 

 

这里改成了1,1,就没有输出了 是为什么呢?难道limit不起作用了?

 

并不是没起作用,是因为输出本来就变成一行了,所以1,1 输出的第二行是空的

这里用了group_concat() 会把输出变成一行,去掉这个函数,就可以用limit来搜索了

http://localhost/sqli-labs/Less-5/?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where 
 table_name='users'  limit 1,1  ),0x7e),1)--+

 

 

在实际环境中可能会遇到有多个数据存在多张user表,那么这样从information表中查出来的就是所有user表的字段,所以加上

and table_schema ='security' 

这样是最准确的

 

posted @ 2021-08-23 16:49  Erichas  阅读(4025)  评论(0编辑  收藏  举报