Sqlmap使用指南

这篇具有很好参考价值的文章主要介绍了Sqlmap使用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Sqlmap的使用

使用流程:

当给sqlmap一个url的时候,它会有如下流程:

1、判断可注入的参数

2、判断可用哪种SQL注入技术进行注入

3、识别出哪种数据库

4、根据用户选择,读取哪些数据

支持的模式(5种)

1、基于布尔的盲注,即可根据返回页面判断条件的真假的注入

2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(通过页面返回时间是否增加来判断)

3、基于报错的盲注,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中

4、联合查询注入,可以使用union的情况下进行注入

5、堆查询注入,可以同时执行多条语句的执行注入

Sqlmap支持的数据库:

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。可以设定HTTP(S)请求的并发数,来提高盲注时的效率。

Sqlmap的等级(7个等级)

如果想观察sqlmap对一个点时怎么进行尝试判断及读取数据的,可以使用参数-v

共有7个等级,默认为1

0、只显示python错误及严重的信息

1、同时显示基本信息和警告信息。(默认)

2、同时显示debug信息

3、同时显示注入的payload

4、同时显示HTTP请求

5、同时显示HTTP响应头

6、同时显示HTTP响应页面

相关的参数:(在前面的都是常用的)

-u/--url:获取目标url,格式:http(s)://targeturl[:port]/[…]

-r:从文件中获取HTTP请求,可以跳过设置一些其他参数(如cookie、POST数据等)

--dbs:列出数据库系统的数据库(当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库)

--tables:列举数据库表

--columns:列举数据库表中的字段

-D,-T,-C:在得知数据库,表名,字段名时,联立读取数据,后面加上--dump

-m:从文本中获取多个目标扫描

-l:从Burp或者WebScarab代理中获取日志,交给sqlmap来一个个检测是否有注入

-g:sql可以检测注入Google搜索结果中GET参数(只获取前100个结果)

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

--force-ssl:当请求是HTTPS的时候需要配合这个参数,或者在Host头后面加上:443

--data:该参数是把数据以POST方式提交

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

--param-del:GET或POST的数据需要用其他字符分割测试参数的时候用

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

--cookie,--load-cookies,--drop-set-cookie:

该参数在两方面有用:web应用登录时,想要在这些头参数中测试SQL注入时。可以通过抓包把cookie获取到,复制出来,然后加到--cookie参数里。在HTTP请求中,遇到Set-Cookie的话,sqlmap会自动获取并且在以后的请求中加入,并且会尝试SQL注入。如果你不想接受Set-Cookie可以使用--drop-set-cookie参数来拒接。

当使用-cookie参数时,当返回一个Set-Cookie头的时候,sqlmap会询问你用哪个cookie来继续接下来的请求。当--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数。

--user-agent,--random-agent:默认sql的HTTP的请求头中User-Agent值为

sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)

可以使用--user-anget参数来修改,同时也可以使用--random-agnet参数来随机的从./txt/user-agents.txt中获取。

当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。

--referer:sqlmap可以在请求中伪造Referer,当--level参数设定为3或者3以上的时候会尝试对referer注入。

--headers:通过该参数来增加额外的http头

--auth-type,--auth-cred:可以用来登录HTTP的认证保护支持的三种方式:Basic、Digest、NTLM

python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"

--auth-cert:HTTP协议的证书认证,当Web服务器需要客户端证书进行身份认证时,需要提供两个文件:key_file,cert_file

key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。

--proxy,--proxy-cred,--ignore-proxy:HTTP(S)代理

使用--proxy代理是格式为:http://url:port。

当HTTP(S)代理需要认证是可以使用--proxy-cred参数:username:password。

--ignore-proxy拒绝使用本地局域网的HTTP(S)代理。

--scope:利用正则过滤目标网址

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

--safe-url,--safe-freq:避免过多的错误请求被屏蔽

有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。

绕过这个策略有两种方式:

1、--safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。

2、--safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。

--eval:每次请求时候自定义的python代码

在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用--eval参数在每次请求时根据所写python代码做完修改后请求。

python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"

--dbms:默认情况会自动探测web应用后端的数据库

--os:默认情况自动探测数据库服务器系统

--prefix,--suffix:注入payload,有些环境需要注入的payload的前面或者后面加一些字符,来保证payload的正常执行。

例如,代码中是这样调用数据库的:

$query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";

这时你就需要--prefix和--suffix参数了:

python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc"

这样执行的SQL语句变成:

$query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND (’abc’=’abc’) LIMIT 0, 1";

--level:探测等级,共有5个等级,默认为1,等级越高,探测的越全面

--risk:风险等级,共有4个风险等级,默认为1,会测试大部分测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试

--second-order:二阶SQL注入,有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面,这时候就需要你指定到哪个页面获取响应判断真假。--second-order后面跟一个判断页面的URL地址。

-b,--banner:返回数据库的版本号

-current-user:获取管理数据的用户

--current-db:返回当前连接的数据库

--users:当前用户有权限读取包含所有用户的表权限时,列出所有管理用户

--passwords:当前用户有权限读取包含用户密码的彪的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。

--schema,--exclude-sysdbs:用户可以用此参数获取数据库的架构,包含所有的数据库,表和字段,以及各自的类型。

加上--exclude-sysdbs参数,将不会获取数据库自带的系统库内容。

$ python sqlmap.py -u "http://192.168.48.130/sqlmap/mysql/get_int.php?id=1" --schema --batch --exclude-sysdbs

--search:可以用来寻找特定的数据库名,所有数据库中的特定表名,所有数据库表中的特定字段

--udf-inject,--shared-lib:可以通过编译MySQL注入自定义的函数(UDFs),或PostgreSQL在windows中共享库,DLL,或者Linux/Unix中共享对象,sqlmap将会问你一些问题,上传到服务器数据库自定义函数,然后根据你的选择执行他们,当你注入完成后,sqlmap将会移除它们。

--os-cmd,--os-shell:

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。

在MySQL、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。

那么他创建的这两个函数可以执行系统命令。在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建。

用--os-shell参数也可以模拟一个真实的shell,可以输入你想执行的命令。

--batch:非交互模式,不需要用户输入,将会默认值一直运行下去

--crawl:爬行网站URL,sqlmap可以收集潜在的可能存在漏洞的连接,后面跟的参数是爬行的深度。

--check-waf:启发式检测WAF/IPS/IDS保护,WAF/IPS/IDS保护可能会对sqlmap造成很大的困扰,如果怀疑目标有此防护的话,可以使用此参数来测试。 sqlmap将会使用一个不存在的参数来注入测试

--identify-waf:sqlmap可以尝试找出WAF/IPS/IDS保护,方便用户做出绕过方式。目前大约支持30种产品的识别。文章来源地址https://www.toymoban.com/news/detail-715416.html

到了这里,关于Sqlmap使用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [网络安全]sqlmap加密注入教程+实战详析

    在使用手工注入绕过参数加密的限制时,需要构造出原始POC再进行加密注入,耗时耗力,因此采用sqlmap加密注入。 在开始本文前,sqlmap基础知识及姿势可参考: [网络安全]以留言板项目渗透实例带你入门sqlmap 基本语法: * 表示只对该参数进行注入测试,不加 * 的话还会测试

    2024年02月07日
    浏览(36)
  • 【SQLMap工具】SQLMap基础及简单使用方法

    SQLMap是一个自动化的SQL注入工具,主要功能是扫描、发现,并利用给定url(域名)的SQL注入漏洞。SQLMap支持的数据库有MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。 相对于手工注入,sqlmap的高效注入大大提高了我们渗透效率。

    2024年02月10日
    浏览(38)
  • 网络爬虫使用指南:安全合理,免责声明

    作为一名经验丰富的网络爬虫,我深知在爬取网页数据时可能会遇到一些问题和风险。因此,我特别撰写这篇经验分享来告诉大家如何合理、安全地使用网络爬虫,以及注意事项和免责声明。 一、了解目标网站 在开始爬取之前,首先要对目标网站进行仔细的了解。了解网站

    2024年02月03日
    浏览(77)
  • SQL注入(DVWA靶场搭建及使用、sqlMap注入、sqlmap问题及解决办法)

    1、客户端向服务端请求的流程 2、SQL注入常见分类  3、SQL注入常见过程  4、SQL注入的作用  5、常用SQL测试语句  注释字符: 一、下载DVWA 下载地址:DVWA/README.zh.md at master · digininja/DVWA · GitHub 这里我是从GitHub上下载的,小伙伴们自行选择 二、安装DVWA 在安装前,需要做一个

    2024年01月23日
    浏览(33)
  • Sqlmap工具使用笔记

    SQLmap建议使用kali版本的 不建议使用windows版本 攻击的时候建议使用vps去攻击 否则本地ip会很快被封 本身是使用python编写的 非常厉害 基本人手一个  而且是开源的 可以自行重写改造开发 如果sqlmap攻击比较慢 要么是网站比较慢 或者是有防火墙,这款软件本身是有指纹的 可能

    2024年02月06日
    浏览(31)
  • SQLMAP使用

    SQLMAP是一个开源的自动化SQL注入工具,主要功能是扫描、发现并且利用给定的URL的SQL注入漏洞。 判断可以注入的参数 判断可以使用哪一种SQL注入技术进行注入 判断识别数据库的类型 根据用户的选择,从数据库中读取数据 基于布尔的盲注:根据返回页面判断条件真假注入 基于

    2023年04月09日
    浏览(19)
  • sqlmap使用教程

    目录 sqlmap基础使用 1、判断是否存在注入 2、判断文本中的请求是否存在注入 3、查询当前用户下的所有数据库 4、获取数据库中的表名 5、获取表中的字段名 6、获取字段内容 7、获取数据库所有用户 8、获取数据库用户的密码 9、获取当前网站数据库的名称 10、获取当前网站数

    2024年02月15日
    浏览(46)
  • 【sqlmap工具的使用】

    .命令基础解析 sqlmap 支持五种不同的注入模式: 1、 基于布尔的盲注, 即可以根据返回页面判断条件真假的注入。 2、 基于时间的盲注, 即不能根据页面返回内容判断任何信息, 用条件语句查看 时间延迟语句是否执行(即页面返回时间是否增加) 来判断。 3、 基于报错注

    2024年02月08日
    浏览(27)
  • sqlmap使用图解

    💪💪 SQLMap 是一个自动化的 SO L注入工具,其主要功能是扫描、发现并利用给定 URL 的 SQL 注入漏洞,内置了根多绕过插件,支持的数据库有 MySOL、Microsoft Access、IBM DB2、SQLite、Firebird、PostgreSQL、Microsoft SQL Server.Sybase 和 SAPMaxDB。SQLMap 采用了以下5种独特的 SQL 注入技术。 基于布

    2023年04月23日
    浏览(18)
  • SQLMAP的使用

    目录 一、SQLMAP 介绍 1、SQLMAP 简介 2、SQLMAP 支持的注入类型 3、运行 sqlmap 4、SQLMAP 常用参数介绍     二、SQLMAP 常用探测方式 1、探测单个目标 2、探测多个目标 3、从文件加载 HTTP 请求进行探测 4、从 burpsuite 日志记录中进行探测 5、检测 SQL 注入漏洞存在的技术类型 6、枚举数

    2024年02月06日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包