19、渗透测试笔记_SQLMAP_20191112

1、SQLMAP介绍

  • sqlmap是一个由python语言编写的开源渗透测试工具,它主要用来检测sql注入漏洞,是一款功能强大的sql漏洞检测利用工具
  • 可检测数据库:access、mssql、mysql、orcale、postgresql、db2、sqlite等
  • 可进行sql盲注、union查询、显错注入、延迟注入、post注入、cookie注入等
  • 其他功能:执行命令、列举用户、检测权限、自动破解、数据导出等功能

2、基本参数

2.1、基本参数

参数 功能
-h 查看帮助选项
–is-dba 当前用户权限
–dbs 所有数据库
–current-db 网站当前数据库
–users 所有数据库用户
–current-user 当前数据库用户
–tables 列表名
– columns 列字段
–dump 下载数据
–flush-session 清除缓存
–count 可以显示表中数据
–betch 默认yes

2.2、读取步骤

  • 读取数据库----->读取表----->读取表的列----->读取内容

    参数 功能
    -D 指定数据库
    -T 指定表
    -C 指定列
    –dbms=mysql/oracle.mssql 指定数据库
参数 功能
–users 枚举所有用户
–passwords 枚举所有用户密码
–roles 列出数据库管理员角色
–privileges 列出数据库管理员权限

2.3、探测等级

  • 参数:–level

  • 共有五个等级,默认为1,GET和POST的数据都会进行测试

  • HTTP Cookie在level为2的时候进行测试

  • HTTP User-Agent/Referer头在level为3的时进行测试

  • 为了保证全面性,建议使用高的level值,3即可或4

2.4、显示调试信息

  • -v 显示调试信息,7个级别
级别 功能
0 只显示python错误以及严重的信息
1 同时显示基本信息和警告信息
同时显示debug信息
3 同时显示注入的payload
4 同时显示HTTP请求
5 同时显示HTTP响应头
6 同时显示HTTP响应页面

2.5、获取目标

  • -u/-url :单个目标
  • **-m :**从文本中获取多个目标

2.6、获取http请求注入

  • 参数:-r

  • 常用情况:

    • post注入

    • 搜索注入

    • http头注入

    • 登录后的注入点(携带cookie)

2.7、–data

  • 此参数时把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数

  • 例:sqlmap -u "http://www.xxx.com/index.php" --data "username=admin&password=password"

2.8、–param-del 参数拆分字符

  • 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数
  • 例:sqlmap -u "http://www.xxx.com/vuln.php" --data="query=foobar;d=1" --param-del=";"

2.9、–referer,–headers,–proxy

  • –referer

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

  • –headers

    可以通过–headers参数来增加额外的http头

    --headers "client-ip:1.1.1.1'"

  • –proxy

    使用–proxy代理的格式为:http://url:port

2.9、时间控制

  • –delay

    可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认没有延迟

    sqlmap/lib/core/option.py
    在1257行的def_setHTTPUserAgent()函数上面加入以下函数:

    def_defaultHTTPUserAgent():
    	"""
    	@return:default sqlmap HTTP User-Agent header
    	@rtype:C{str}
    	"""
    	return "User-Agent:Mozilla/5.0 (compatible:Googlebot/2.1;
    	http://www.google.com/bot.html)"
    

    加入后安全狗就不会拦掉 也可以换为百度的

    加入后安全狗就不会拦掉 也可以换为百度的

  • –timeout

    可以设定一个HTTP(S)请求超过多久判定为超时,10.5表示10.5秒,默认是30秒

  • –retries

    当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次

2.10、–technique

  • 这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式
  • 支持的探测方式
    • B:Boolean-based blind SQL injection (布尔型注入)
    • E:Error-based SQL injection (报错型注入)
    • U:UNION query SQL injection (可联合查询注入)
    • S:Stacked queries SQL injection (可多语句查询注入)
    • T:Time-based blind SQL injection (基于时间延迟注入)

2.11、–search,-C,-T,-D

  • –search可以用来寻找特定的数据库名,所有数据库中的特定表名,所有数据库表中的特定字段
  • 可以在以下三种情况使用:
    • -C后跟着用逗号分隔的列名,将会在所有数据库表中搜索指定的列名
    • -T后跟着用逗号分隔的表名,将会在所有数据库中搜索指定的表名
    • -D后跟着用逗号分隔的库名,将会在所有数据库中搜索指定的库名

2.12、–flush-session

  • –flush-session

    如果不想用之前缓存这个目标的session文件,可以使用这个参数,会清空之前的session,重新测试该目标

2.13、–smart、–mobile

  • –smart

    有时对目标非常多的URL进行测试,为节省时间,只对能够快速判断为注入的报错点进行注入,可以使用此参数

  • –mobile

    有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登录

3、注入

  • POST登录框注入

  • 搜索框注入

    sqlmap -r search-text.txt

  • 伪静态注入

    注入点:http://www.xxx.com/index.php/index/id/40.html

    sqlmap -u "http://www.xxx.com/index.php/index/id/40*.html"

  • 延迟注入

    –time-sec

4、命令执行

  • 参数:–os-shell–os-cmd
  • 当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数
  • 在MySQL,PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()
  • cmd----------------执行cmd命令
  • shell---------------执行当前用户命令
  • –os-shell
  • 自动上传脚本文件
  • 返回shell
发布了38 篇原创文章 · 获赞 135 · 访问量 2793

猜你喜欢

转载自blog.csdn.net/weixin_44023693/article/details/103042715