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加密。