SQL注入学习笔记

目录

一.SQL注入之简要SQL注入

1.SQL注入安全测试中危害

2.SQL注入产生原理分析

3.学习第一个数据库MYSQL简单注入

mysql的SQL注入

常见的sql注入工具使用

二.SQL注入之MYSQL注入

1.高权限注入:

2文件读取操作:

3路径获取常见方法

4常见读取文件列表

5常见的写入文件问题:

6魔术引号及常见防护:

三、SQL注入之类型及提交注入

四、SQL注入之oracle,MangoDB等注入

五、SQL注入之查询方式及报错盲注

1.查询方式:

2.SQL注入报错盲注

六、SQL注入之二次,加解密,DNS等注入

七、SQL注入之堆叠及WAF绕过注入

八、SQL注入之SQLMAP绕过WAF


一.SQL注入之简要SQL注入

SQL注入学习笔记_第1张图片

1.SQL注入安全测试中危害

① 危害数据库中的数据,会被SQL注入影响

②危害网站的权限(有条件,满足条件才有权限)

2.SQL注入产生原理分析

SQL注入的前提:

①SQL语句在定义时有可控变量,并且代入数据库查询;

②变量没有进行过滤或者过滤不严谨

xxxx.php?id=1 union select xxxxx

通过参数把恶意的SQL语句传递到原有的SQL语句中来实现自定义的查询

SQL注入学习笔记_第2张图片

搭建一个SQL注入学习靶场环境

sqlilabs靶场

3.学习第一个数据库MYSQL简单注入

SQL注入学习笔记_第3张图片

Mysql 数据库注入

如何判断注入点
老办法:and 1=1 页面正常
and 1=2 页面错误

最舒适的方法:

id=1daffadfd 页面有影响则带入数据库,有注入点

id=1adada 页面进行跳转,如跳转到index.php,则说明有过滤,无注入点

报错猜解列名数量(字段数) order by 错误与正常值

union 联合语句

信息收集:

数据库版本: version()

数据库名字: database()

数据库用户: user()

操作系统: @@versio_compile_os

必要知识:在MySql5.0以上版本中,MySQL存在一个自带数据库名为information_schema,他是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询他获取指定数据库下面的表名或列名信息

数据库中符号”.“代表下一级,如xiaodi8.user表示数据库下user表名

information_schema.tbales 记录所有表名信息的表

information_schema.columns 记录所有列名信息的表

table_name 表名

column_name 列名

table_schema数据库名

cmd5加密:www.cmd5.com

mysql的SQL注入

联合注入

dnslog注入

报错注入

盲注(布尔,时间)

宽字节注入

//读写文件

常见的sql注入工具使用

sqlmap,超级sql注入工具咋用的,怎么去获取数据库,读表,查数据 ,os-shell

二.SQL注入之MYSQL注入

1.高权限注入:

SQL注入学习笔记_第4张图片

高权限注入:root 用户,可查看整个数据库,可以实现跨库查询

2文件读取操作:

load_file():读取函数

into outfile 或 into dumpfile :导出函数

3路径获取常见方法

报错显示,遗留文件,漏洞报错,平台配置文件,爆破(网站常见路径)等

4常见读取文件列表

http://127.0.0.1:8888/Less-2/?id=-1 union select1,load_file(D:\\Software\\PhpStudy\\phpstudy_pro\\WWW\\sqli-labs-master\\sql-connections\\db-creds.inc),3

5常见的写入文件问题:

魔术引号


可以通过编码和宽字节进行绕过
 

6魔术引号及常见防护:

魔术引号:magic_quotes_gpc

当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线


内置函数:int 等
自定义关键字:select

WAF防护软件:安全狗,宝塔等

低版本注入配合读取或暴力破解

三、SQL注入之类型及提交注入

简要明确参数类型

数字,字符,搜索,json等

简要明确请求方法

GET,POST,COOKIE,REQUEST,HTTP头等

其中SQL语句干扰符号‘,",&,),}等,具 体看写法

四、SQL注入之oracle,MangoDB等注入

SQL注入学习笔记_第5张图片

简要学习各种数据库注入点

数据库组成架构

access

表名

列名

数据

mysql mssql等

数据库名

表名

列名

数据

数据库高权限操作

access 数据库最高权限用户为Root
SQL server 数据库最高权限为Sysadmin

文件写入失败的原因:1.防护软件,2,权限问题,设置目录

Access 注入:

access无数据库名,也没有information_schema,所以表名,列名的信息基本靠暴力破解;后缀asp

遗留问题:

access,暴力破解时获取表名,列名失败怎么办

SQL server注入:

使用工具,或者网上找SQL server注入语句手动注入;后缀asp

oracle 注入:

使用工具,或者网上找oracle 注入语句手动注入;后缀为php;没有文件写入

postgresql注入:

使用工具,或者网上找postgresql注入语句手动注入;后缀为php

mongoDB注入:

使用工具,或者网上找postgresql注入语句手动注入;提交注入语句时采用集合

简要学习各种注入工具的使用指南(熟悉工具的支持库,注入模式,优缺点等)
sqlmap: 支持面广,功能更强大

NoSQLAttack : 支持mangoDB数据库

Pangolin


 

五、SQL注入之查询方式及报错盲注

SQL注入学习笔记_第6张图片

1.查询方式:

SQL注入学习笔记_第7张图片

SQL注入学习笔记_第8张图片

select:

insert:

update:

delete :

order by :

通过以上查询方式与网站应用的关系

诸如点产生的地方或应用猜测到对方SQL查询方式

2.SQL注入报错盲注

根据页面的不同判断对于的sql语句来判断是否有回显;一般select 有回显,insert,update,delete等无回显,需要用到报错盲注(一般使用报错回显,效率最高)

SQL注入学习笔记_第9张图片

延时注入

SQL注入学习笔记_第10张图片

if

SQL注入学习笔记_第11张图片

判断

SQL注入学习笔记_第12张图片

sleep:延迟时间

SQL注入学习笔记_第13张图片

结合:

延时注入建议使用ascii码,防止引号转义,

基于布尔的SQL盲注-逻辑判断

SQL注入学习笔记_第14张图片

六、SQL注入之二次,加解密,DNS等注入

加密,因为代码中进行了解密,所以在注入时要进行加密

SQL注入学习笔记_第15张图片

二次注入:建立在白盒测试的基础上

SQL注入学习笔记_第16张图片

DNSlog注入:需要有高权限

应用场景:使用盲注之后还是不能回显

SQL注入学习笔记_第17张图片

七、SQL注入之堆叠及WAF绕过注入

堆叠查询注入:多条sql语句一起执行

SQL注入学习笔记_第18张图片

SQL注入学习笔记_第19张图片

WAF绕过:绕过匹配规则,同时不干扰语句的执行

SQL注入学习笔记_第20张图片

参数污染:在有多个参数的时候,选择哪一个

SQL注入学习笔记_第21张图片

fuzz 模糊测试(暴力测试),本质上是一种思路,需要自己编写脚本

八、SQL注入之SQLMAP绕过WAF

IP白名单:

SQL注入学习笔记_第22张图片

静态资源:

SQL注入学习笔记_第23张图片

url白名单:

SQL注入学习笔记_第24张图片

爬虫白名单:伪造搜索引擎

SQL注入学习笔记_第25张图片

你可能感兴趣的:(数据库,mysql,sql,web安全)