MySQL 注射攻击与防范详解
PHP+MySQL JSP+MySQL
一.基础知识
1.MYSQL的版本
4.0如下,4.0以上,5.0以上。
4.0如下不支持union查询
4.0以上magic_quotes_gpc默认为on
5.0以上能够暴表暴列,支持跨库
2.magic_quotes_gpc=on
当php.ini里的 magic_quotes_gpc 为On 时。提交的变量中全部的 ' (单引号), " (双引号), \(反斜线) and 空字符会自动转为含有反斜线的转义字符。例如'会变成\'。给注入带来很多的阻碍。
3.注释符
Mysql有3种注释句法
# 注射掉注释符后面的本行内容
-- 注射效果同#
/* ... */ 注释掉符号中间的部分
对于#号将是咱们最经常使用的注释方法。
-- 号记得后面还得有一个空格才能起注释做用。
/*...*/ 咱们通常只用前面的/*就够了。
注意:在浏览器地址栏输入#时应把它写成%23,这样经urlencode转换后才能成为#,从而起到注释的做用。
注射中经常使用/**/代替空格。
4.一些函数与MSSQL中的不一样
ascii
()
length()
5.导出文件(into outfile)
使用 into outfile 把代码写到web目录取得WEBSHELL
首先须要 3大先天条件
①知道物理路径(into outfile '物理路径') 这样才能写对目录
②可以使用union (也就是说须要MYSQL4以上的版本)
③对方没有对'进行过滤(由于outfile 后面的 '' 不能够用其余函数代替转换)
后天条件就要2个
①就是MYSQL 用户拥有file_priv权限(否则就不能写文件 或者把文件内容读出)
②对web目录有写权限MS 的系统就不说了通常都会有权限的~可是*nix 的系统嘛!一般都是rwxr-xr-x 也就是说组跟其余用户都没有权限写操做
6.读取文件(load_file())
serv-U默认安装路径的servudaemon.ini。注意能够变化D盘,E盘……
读取数据库配置文件
IIS站点配置信息,c:\windows\system32\inetsrv\metabase.xml
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/php5/lib/php.ini //PHP相关设置
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本
C:\mysql\data\mysql\user.MYD //us存储了mysql.er表中的数据库链接密码
/etc/sysconfig/iptables //从中获得防火墙规则策略
7.绝对路径
1.加特殊符号,访问不存在的连接
2.读取服务器配置文件
3.直接访问
phpmyadmin/libraries/select_lang.lib.php
phpmyadmin/darkblue_orange/layout.inc.php
phpmyadmin/index.php?lang[]=1
8.网站OS版本
变换大小写。
9.PHPMyadmin路径
在测试uninx系统中phpmyadmin路径时候能够在http://127.0.0.1/后面尝试phpmyadmin的各类大小写组合。
10.MySQL,外部链接,内部链接
通常是3306.telnet 3306 。低版本外部容许链接。链接上以后即便magic_quotes_gpc=on也能够直接into outfile
欢迎关注本站公众号,获取更多信息