学习目标:
本期我们来了解一下sql注入的工具–sqlmap,在平常的注入的过程中我们可以体会到采用手工注入耗时耗力,所以sqlmap就给我们来了极大的便利
学习内容:
- 搭建 sqlmap环境
- sqlmap使用
- POST型注入
- GET 型注入
搭建环境
要使用sqlmap我们就要配置python的环境
1.1 下载 Python 安装程序
访问 Python 官方网站:python.org
下载适用于 Windows 的 Python 3 安装程序。通常会有两个版本:32 位和 64 位。您需要根据您的系统选择合适的版本。
1.2 安装 Python
双击下载的安装程序。
在安装向导中,确保选中“Add Python 3.x to PATH”选项。
点击“Install Now”或“Customize installation”根据需要进行安装。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xyq2024/article/details/142968458
sqlmap下载
下载目录:https://github.com/sqlmapproject/sqlmap
下载之后进行解压

在这个地方输入cmd
然后输入
python sqlmap.py

出现这个说明工具启用成功了,
sqlmap使用
-u:用于get提交方式,后面跟注入的url网址
–level
–risk
–dbs:获取所有数据库
–tales:获取所有数据表
–columns:获取所有字段
–dump:打印数据
-D:查询选择某个库
-T:查询选择某个表
-C:查询选择某个字段
GET型
下面就是工具如何使用了,首先是get型,我们以sqli-labs的第二关为例
复制第二关的网址,然后在sqlmap中输入
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1"
就可以去判断这个网站可以用什么类型的注入方式,第一次被注入的网站会询问几个问题我都整理下来了
1.it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n]
它看起来像后端DBMS是’MySQL’。 是否要跳过特定于其他DBMS的测试负载? [Y/n] 输入"Y"
2.for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n]
对于剩余的测试,您想要包括所有针对“MySQL”扩展提供的级别(1)和风险(1)值的测试吗? [Y/n] 输入"N"
3.POST parameter ‘n’ is vulnerable. Do you want to keep testing the others (if any)? [y/N]
POST参数’n’是脆弱的。 你想继续测试其他人(如果有的话)吗?[y/N] 输入"Y"
我们看情况进行输入

这里就是使用工具后可以看到第二关可以采用四种方式进行注入布尔,报错回显,延时,联合查询。
至于其中的level和risk我找了一下介绍
level:执行测试的等级(1~5,默认为1),使用-level参数并且数值>=2的时候会检查cookie里面的参数,
当>=3时检查user-agent和refereer
risk:执行测试的风险(0~3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,
3会增加or语句的sql注入
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1" --dbs 获取全部库名
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1" -D 库名 --tables 查询某库中的全部表
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1" -D 库名 -T 表明 -columns 查询某库某表的字段
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1" -D 库名 -T 表明 -C 字段名 --dump 打印出数据
python sqlmap.py -u "http://localhost/sqli-labs-php7-master/Less-2/?id=1" --current -db 获取当前数据库名
--dump是打印用的,使用后会出现打印的路径
POST型
post型我们需要burp进行抓包,我们以12关为例子
输入数据后我们进行抓包

将这些数据复制保存到一个txt文本文档中,
然后在工具中输入
python sqlmap.py -r C:\Users\alter\Desktop\1.txt
这里我是保存到了桌面上,命名是1.txt
这里的操作和get型类似,但是有个专门对某参数进行注入的命令,适用于我们猜到这里是注入点,可以节省我们大量时间
python sqlmap.py -r C:\Users\alter\Desktop\1.txt -p uname --dbs
比如这个地方我们猜测uname是注入点我们就可以这样输入,同样会显示给我们有什么注入方法

剩下的就是去猜表,猜一些字段,就用的跟上面的一样了
总结
其实没啥好总结的,用法就是这么个用法,还是得多练,over

1374

被折叠的 条评论
为什么被折叠?



