• sqlmap介绍与使用案例


    作者:虫儿飞ZLEI
    链接:https://www.jianshu.com/p/3d3656be3c60
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    sqlmap介绍与使用案例

    1.sqlmap简介

    最白话的介绍就是sqlmap是一个工具,一个用来做sql注入攻击的工具

    2.windows安装python2

    这个sqlmap需要python2才可以正常执行,注意python3不行哦,如果你已经安装了python3,本地同时安装python2和python3,需要注意修改其中一个python执行文件的名字,以便在path中添加环境变量的时候,可以正确区分,详细这里不进行赘述,如果不了解,建议自行百度。

    3. windows安装sqlmap

    3.1 下载压缩包

    在sqlmap的网站上下载对应的压缩文件
    http://sqlmap.org/

    3.2 解压文件

    解压到任意文件夹皆可
    解压以后大概是这个样子的

    3.3 启动一个命令行,执行sqlmap.py

    如果出现这个界面,表示一切正常 

    按任意键结束

    4. 测试sqlmap功能

    4.1 使用DVWA测试网站

    4.1.1 关于dvwa

     
     

    这个网站有sql漏洞,专门拿来测试用,不知道是哪位好心人搞出来的

    网址是:http://43.247.91.228:81/login.php
    登陆的用户名密码是:admin/password

    4.1.2 操作

    首先登陆成功以后三步走,拿到需要的url

     
    image.png

    拿到url以后,就可以使用这个url来注入了

    python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#"
    

    出现如下结果,则表示sqlmap检测到有可以注入的地方,


     
     

    ps:如果没有检测到可以注入的地方,会显示如下


     
    image.png

    既然检测到有可以注入的地方,现在我们就来通过这个注入来获取一些数据库的信息

    获取数据库
    python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs
    

    可以看到执行以后拿到了数据库的信息


     
     

    再进一步,获取数据库中表的信息

    python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables
    

    可以看到,拿到了dvwa这个库中的所有表的名字


     
    image.png

    再进一步,获取表中的字段信息

    python2 sqlmap.py -u "http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --columns
    

    可以看到,拿到了表中的所有字段


     
     

    4.2 使用本地网站

    4.2.1 本地网站是本地的项目,现在用本地的项目跑起来来测试sqlmap

    主要测试三个url:
    http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'
    http://localhost:9099/record/user/2019-03-09
    127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684

    4.2.2 操作--url1

    url1:http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3',这是一个post请求,nsrsbh是所需要的参数

    执行:

    python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'"  --method=POST
    

    可以看到,没有访问到正确的连接,而是被重定向到了登陆的login页面,这是因为这个网站需要登陆,没有登陆的情况访问链接就会被重定向到登陆页面,所以在这里现在浏览器中登陆,然后拿到浏览器的cookie,让sqlmap携带着cookie再去攻击


     
     

    拿到浏览器的cookie

     
     

    执行(携带cookie):

    python2 sqlmap.py -u "http://localhost:9099/tjcx/qyzxcx/zscq/sbxx/years?nsrsbh='1234000048500077X3'" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=POST
    

    执行结果:可以看到,并没有找到可以注入的地方


     
    image.png

    观察这个网站的日志,也可以看到,这个接口被调用很多次,都是sqlmap自动调用的,它在尝试寻找可以注入的地方


     
    image.png

    4.2.3 操作--url2

    url2:http://localhost:9099/record/user/2019-03-09,这是一个get请求,2019-03-09是restful风格的参数

    同样携带cookie执行:

    python2 sqlmap.py -u "http://localhost:9099/record/user/2019-03-09" --cookie="JSESSIONID=9446902e-703b-4c81-914a-9abbd90ed9ce" --method=GET
    

    执行结果,没有发现可以注入的地方


     
     

    查看网站后台,接口同样被调用多次

     
     

    4.2.3 操作--url3

    url3:127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684,这也是一个get请求,但是不同的是,这个接口不需要cookie就可以访问,但是需要携带正确的header才可以执行

    携带header执行:

    python2 sqlmap.py -u "127.0.0.1:9099/open/qyxx/jcsj_gs?nsrsbh=110101717802684"  --method=GET --headers="type:pwd
    channelPwd:f1e7e7f187f84cdfb4784481ed01abd5
    channelId:FDDX_PWD"
    

    执行结果,没有找到可以注入的地方

     

    查看后台,接口同样被调用多次

     
     

    5. 总结

    简单的使用就是这样,需要一个url,有的可能需要携带cookie,有的可能需要携带header,
    如果找到了注入点,就可以拿到一些数据信息,但是现在的网站通常也比较难找到可以注入的url。
    可以通过这种方式来检测自己写的接口是否有被sql注入的风险

    关于sqlmap的命令还有更深入的,可以通过-h或者--help来查看更多的指令操作,比如不想每次执行语句的时候都要手动确认一些选择项,可以通过--batch指令,让sqlmap自己去决定。

  • 相关阅读:
    给asterisk写app供CLI调用
    C++实现raw_input
    CentOS6下配置本地用户访问vsftpd,并赋予写权限
    用SqlServer存储Asterisk的呼叫记录
    go 1发布了,之前写的代码不能运行了
    字符串分割(C++)
    asterisk事件监控
    git的简单使用
    用Python访问SqlServer
    像Python那样跑go1的代码(Windows下双击运行)
  • 原文地址:https://www.cnblogs.com/syj789/p/12635925.html
Copyright © 2020-2023  润新知