[TOC]

SQL注入基础:

SQL注入相关基础概念以及防御方法:

SQL注入的产生:

image-20210725185717884

在这里可以对特定参数尝试真假值,真值时正确输出,假值时异常,借此推断注入点

image-20210725185943580

SQL注入概念:

在输入字符串中拼接想要的内容作为SQL指令得到运行。

image-20210725190703704

SQL注入防御方法:

防御SQL注入的最佳方式就是使用预编译语句,绑定变量。

语义不变,变量用?来表示,攻击者无法改变SQL的结构。

不管输入的是什么均当作字符串处理,不会产生分离解析的情况。

image-20210725191337443

SQLMAP的使用:

SQLMAP简介:

image-20210725192251576

SQLMAP使用方法:

image-20210725192355885

image-20210725192551203

SQLMAP常见参数说明:

image-20210725192618041

SQLMAP实例:

image-20210725193204562

image-20210725193344756

image-20210725193529665

image-20210725193923205

image-20210725194000798

image-20210725194401632

image-20210725194449776

image-20210725194558859

image-20210725194647614

image-20210725195002467

image-20210725195044868

SQL手工注入:

无过滤情况下有回显手工注入:

手工注入意义:

在很多情况下SQLMAP是无法直接使用的,比如有WAF或者回显比较怪异。必须掌握原理,举一反三!

有回显注入界面:

image-20210725200043278

有回显注入步骤:

1.找到注入点,order by注入列数,便于之后的联合查询。

image-20210725200409406

image-20210725200510916

image-20210725200554525

2.联合查询

image-20210725200820876

image-20210725200645023

3.查询数据库名

image-20210725201033523

image-20210725201455193

4.查询数据库中表名:

image-20210725201216898

image-20210725202055992

image-20210725201308730

5.查询特定表中的信息:

image-20210725202326589

image-20210725202440604

无过滤情况下无回显手工注入:

无回显注入界面:

image-20210725202635812

无回显注入步骤:

image-20210725202747414

image-20210725202827034

image-20210725202901586

image-20210725202935968

image-20210725203000624

image-20210725203020664

无回显注入脚本

SQL无回显注入脚本:

image-20210728135015927

image-20210728135112842

SQL注入绕过:

常见绕过姿势:

大小写绕过:

​ SeLEcT

双写绕过:

​ selselectect 特定环境中才能用,比如过滤select

空格过滤:

image-20210725213118881

引号绕过:

image-20210725213241378

逗号绕过:

image-20210725213334257

比较符号绕过:

image-20210725213353963

逻辑比较绕过:

image-20210725213415466

注释绕过:

image-20210725213454197

等价函数绕过:

image-20210725213515255

多行注入:

使用;结束当前语句并拼接自己的语句。

宽字节注入:

image-20210725213629458

报错注入:

image-20210725213807296

过滤关键字:

法1:定义一个十六进制字符串,实际上是select语句,将字符串编译一下再去执行。

动态的去执行一条SQL语句,以达到绕过的目的。

法2: 打开一个表,读取数据,然后关闭它。

image-20210725213703492

数据库类型判别:

image-20210725211145659

数据库特征-基本版本函数

image-20210725211029875

image-20210725211408999

image-20210725211450131

数据库特征-基于特殊的函数利用

image-20210725211613338

image-20210725211706181

image-20210725211758293

总结

方法很多,注入时多思考,多在本地进行测试,找不同。