010203Sqlmap

3-1sqlmap介绍

1. Sqlmap介绍

sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。 它有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获 取数据到访问底层文件系统和通过带外连接在操作系统上执行命令。 官方网址:http://sqlmap.org

2. Sqlmap环境安装

Python2.x环境下载地址:https://www.python.org/downloads/release/python-2715

3. Sqlmap下载

Sqlmap下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master

4. Sqlmap版本查看

由于Sqlmap使用Python(解释型语言)编写,所以可以直接在命令行中调用Python 解释器运 行Sqlmap.py

 

3-2SQLmap获取目标

1. Sqlmap直连数据库

Sqlmap支持直连数据库,通过以下命令来直连。 服务型数据库(前提知道数据库用户名和密码): DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME (MySQL, Oracle, Microsoft SQL Server, PostgreSQL, etc.) 例如:python sqlmap.py -d "mysql://admin:admin@192.168.21.17:3306/testdb" -f --banner --dbs --users 文件型数据库(前提知道数据库绝对路径): DBMS://DATABASE_FILEPATH (SQLite, Microsoft Access, F

2. Sqlmap URL探测

Sqlmap直接对单一URL探测 ,参数使用-u 或 --url URL格式:http(s)://targeturl[:port]/[...] 例如:python sqlmap.py -u "http://www.target.com/vuln.php?id=1" --banne

3. Sqlmap文件读取目标

Sqlmap支持从不同类型的文件中读取目标进行Sql注入探测。 1、-l 从Burpsuite proxy或WebScarab proxy中读取Http 请求日志文件 2、-x 从sitemap.xml站点地图文件中读取目标探测。 3、-m 从多行文本格式文件读取多个目标,对多个目标进行探测。 4、-r 从文本文件中读取Http请求作为Sql注入探测的目标。 5、-c 从配置文件 sqlmap.conf中读取目标探测。

 

 

4. Sqlmap Google批量扫注入

Sqlmap通过-c 自动利用Google获取指定Google hack的目标,然后利用交互向导模式进行Sql 注入探测。 例如: python sqlmap.py -g "inurl:\".php?i

 

3-3sqlmap设置请求参数一

1. Sqlmap设置HTTP方法

Sqlmap会自动在探测过程中使用适合的HTTP请求方法。但是在某些具体情况下,需要强制使用具体的HTTP请求方法。例如 PUT请求方法。HTTP PUT请求方法不会自动使用,因此需要我们强制指定。使用 --method=PUT。

 

2. Sqlmap设置POST提交参数

默认情况下,用于执行HTTP请求的HTTP方法是GET,但是您可以通过提供在POST请求中发送的数据隐式地将其更改为POST。这些数据作为这些参数,被用于SQL注入检测。
python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banner --dbs --users

-f  fingerprint 指纹

 

3. Sqlmap设置参数分割符

在某些情况下,sqlmap需要覆盖默认参数分隔符(例如& in GET和POST数据),才能正确地分割和单独处理每个参数。

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

4. Sqlmap设置Cookie头

Sqlmap中用来设置Cookie的参数:--cookie, --cookie-del, --load-cookies  --drop-set-cookie

 使用场景:
1、Web应用程序具有基于Cookie验证的过程;
2、想利用Cookie值上的SQL注入漏洞。

Sqlmap使用Cookie过程:
1、登录或浏览页面。
2、打开审计工具或代理截断,复制Cookie。
3、在Sqlmap中使用 --cookie 粘贴Cookie。

如果在通信过程中,web应用程序使用Set-Cookie标头进行响应,sqlmap将在所有进一步的HTTP请求中自动使用其值作为Cookie标头。sqlmap还将为SQL注入自动测试这些值。这可以通过提供--drop-set-cookie—sqlmap将忽略任何即将到来的Set-Cookie头来避免。 

反之亦然,如果您提供了一个带有选项的HTTP Cookie报头—Cookie和目标URL在任何时候发送一个HTTP set -Cookie报头,sqlmap将询问您要为以下HTTP请求使用哪组Cookie。

load-cookie,可以用来提供包含Netscape/wget格式的cookie的特殊文件

注意:如果需要对HTTP Cookie值进行SQL注入探测,需要设置 --level 2以上(3)。

3-4sqlmap设置请求参数二

1. Sqlmap设置User-Agent

默认情况下,sqlmap使用以下用户代理头值执行HTTP请求: sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org) 然而,通过提供自定义用户代理作为选项的参数,可以使用选项——user-agent来伪造它。 此外,通过 --random-agent, sqlmap将从./txt/user-agent中随机选择一个用于会话中的所有HTTP请求。 一些站点在服务端检测HTTP User-Agent值,如果不是一个合法的值,就会中断连接。同时Sqlmap也会曝出错误。 [hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to force the HTTP User-Agent header with option --user-agent or --random-agent 注意针对User-Agent的值探测SQL注入,需要设置--level 值为3.

2. Sqlmap设置Host头

可以手动设置HTTP主机头值。默认情况下,从提供的目标URL解析HTTP主机头。 注意,如果 --level设置为5,将对HTTP主机头进行SQL注入检测

3. Sqlmap设置Referer头

伪造HTTP Referer值是可能的。默认情况下,如果没有显式设置,HTTP请求中不会发送HTTP引用头。 请注意,如果--level设置为3或以上,将针对HTTP引用头 进行SQL注入测试。

4. Sqlmap设置额外HTTP头

通过设置选项--header,可以提供额外的HTTP标头。每个标头必须用换行符分隔,从配置INI文件中提供它们要容 易得多。可以查看示例sqlmap.conf文件。 python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --headers="Host:www.target.com\nUser-agent:Firefox 1.0" -v

 

3-5sqlmap设置请求参数三

1. Sqlmap设置HTTP协议认证

Sqlmap中设置HTTP协议认证的参数:--auth-type和--auth-cred 其中--auth-type支持 Basic、Digest、NTLM --auth-cred认证语法为:username:password 例如:python sqlmap.py -u "http://url/arit.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"

2. Sqlmap设置HTTP代理

Sqlmap中设置代理的参数:--proxy, --proxy-cred, --proxy-file ,--ignore-proxy 其中--proxy用来设置HTTP代理服务器位置 格式:--proxy http(s)://ip[:端口] --proxy-cred用来设置HTTP代理服务器认证信息 格式:--proxy-cred username:password --proxy-file用来设置多条代理在文件中 --ignore-proxy当您希望通过忽略系统范围内的HTTP(S)代理服务器设置来针对本地网络的目标部分 运行sqlmap时,应该使用这种方法

3. Sqlmap设置Tor隐藏网络

Sqlmap中设置Tor网络的参数:--tor, --tor-port, --tor-type --check-

 

4. Sqlmap设置延

Sqlmap探测过程中会发送大量探测Payload到目标,如果默认情况过快的发包速度回导致目标预警。为了避免这样 的情况发生,可以在探测设置Sqlmap发包延迟。默认情况下,不设置延迟。 --delay 0.5 设置延迟0.5秒

 

3-6sqlmap设置请求参数四

1. Sqlmap设置超时

在考虑超时HTTP(S)请求之前,可以指定等待的秒数。有效值是一个浮点数,例如10.5表示10秒半。默认设置为30 秒。 例如:--timeout 10.5

 

2. Sqlmap设置重试次数

--retries count 设置对应重试次数,默认情况下重试3次。

 

3. Sqlmap设置随机化参数

Sqlmap可以指定要在每次请求期间随机更改其值的参数名称。长度和类型根据提供的原始值保持一直。 --randomize 参数名

 

4. Sqlmap设置日志过滤目标

与使用选项-l使用从提供的日志解析的所有主机不同,您可以指定有效的Python正则表达式,用于过滤所需的日志。

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

--skip-urlencode 不进行URL加密

3-7sqlmap设置请求参数五

1. Sqlmap设置忽略401

--ignore-401 参数用来忽略未验证错误。

如果您想测试偶尔返回HTTP错误401(未经授权的)的站点,而您想忽略它并在不提供适当凭证的情况下继续测试,您可以使用--ignore-401

 

2. Sqlmap设置HTTP协议私钥

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


--auth-file 文件名

3. Sqlmap设置安全模式

避免在多次请求失败后销毁会话

有时,如果执行了一定数量的不成功请求,则在此期间的web应用程序或检查技术会销毁会话。这可能发生在sqlmap的检测阶段或利用任何盲SQL注入类型时。原因是SQL有效负载不一定返回输出,因此可能会向应用程序会话管理或检查技术发出信号。

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

通过这种方式,sqlmap将访问每个预定义数量的请求,而不对某个安全URL执行任何类型的注入。

4. Sqlmap设置忽略URL编码

据参数的位置(例如GET),默认情况下它的值可以是URL编码的。在某些情况下,后端web服务器不遵循RFC标准,需要以原始的非编码形式发送值。在这种情况下使用--skip-urlencode。

--skip-urlencode  不进行URL加密。

3-8sqlmap性能优化

3-9sqlmap指定位置注入

3-10sqlmap注入参数一

3-11sqlmap注入参数二

3-12sqlmap自定义检测参数

3-13salmap注入技术参数一

3-14sqlmap注入技术参数2

3-15sqlmap检索dbms信息

3-16sqlmap检索DBMS用户信息

3-17sqlmap枚举信息一

3-18sqlmap枚举信息二

3-19sqlmap枚举信息三

3-20sqlmap系统参数

3-21sqlmap通用参数

3-22sqlmap通用参数二

3-23sqlmap通用参数三

3-24sqlmap通用参数四

3-25sqlmap通用参数五

3-26sqlmap杂项参数

3-27sqlmap tamper脚本编写介绍

3-28sqlmap tamper脚本分析-All

3-29sqlamp_tamper脚本分析

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值