学习目标:能看懂大部分的sql语句,做到给一个复杂的sql语句能看懂,知道是干什么用的,为什么这么写.
第一部分:获取payload
通过sqlmap awvs等工具
更新sqlmap
内容太多,先放弃了 用着再查
通过谷歌
第二部分:基础
1、注入的分类:
基于从服务器接收到的响应
▲基于错误的 SQL 注入
在URL加入了一些错误的SQL语句,被执行后返回了异常信息,这些异常信息当中包含了敏感信息
▲联合查询的类型
▲堆查询注入
回显注入:利用注入漏洞可以改变页面返回数据
▲SQL 盲注
•基于布尔 SQL 盲注
通过条件是否成立来判断substr截取第一个字符判断是否大于’a’,成立则页面返回数据
•基于时间的 SQL 盲注
通过返回时间的长短判断
获取第一个字符的ascii码,判断是否大于115,不成立延时5秒返回
•基于报错的 SQL 盲注
基于如何处理输入的 SQL 查询(数据类型)
•基于字符串
•数字或整数为基础的
基于程度和顺序的注入(哪里发生了影响)**
★一阶注射
★二阶注射
一阶注射是指输入的注射语句对 WEB 直接产生了影响, 出现了结果; 二阶注入类似存
储型 XSS, 是指输入提交的语句, 无法直接对 WEB 应用程序产生影响, 通过其它的辅助间
接的对 WEB 产生危害, 这样的就被称为是二阶注入.
基于注入点的位置上的
▲通过用户输入的表单域的注射。
▲通过 cookie 注射。
▲通过服务器变量注射。 (基于头部信息的注射)
以上就是通常分类,先记录下,通过后面的实验练习加深理解
2、系统函数
介绍几个常用函数:
- version()——MySQL 版本
- user()——数据库用户名
- database()——数据库名
- @@datadir——数据库路径
- @@version_compile_os——操作系统版本
3、字符串连接函数
- concat(str1,str2,…)——没有分隔符地连接字符串
- concat_ws(separator,str1,str2,…)——含有分隔符地连接字符串
- group_concat(str1,str2,…)——连接一个组的所有字符串, 并以逗号分隔每一条数据
以上三个函数能一次性查出所有信息 .
4、一般用于尝试的语句
Ps:–+可以用#替换, url 提交过程中 Url 编码后的#为%23
or 1=1–+
'or 1=1–+
“or 1=1–+
)or 1=1–+
‘)or 1=1–+
") or 1=1–+ "))or 1=1–+
一般的代码为:
i d = id= id=_GET[‘id’];
s q l = " S E L E C T ∗ F R O M u s e r s W H E R E i d = ′ sql="SELECT * FROM users WHERE id=' sql="SELEC