sqlmap使用教程大全命令大全(图文)

      最后更新:2022-07-30 20:53:11 手机定位技术交流文章

      我们先准备一个目标机器,我将采用传统的SQL大峡谷目标机器

      我们再url后面传参 http://192.168.98.100/sqli-labs/Less-1/?id=1

      接下来我们用此url进行SQLmap的教学 http://192.168.98.100/sqli-labs/Less-1/?id=1

      1.SQLmap的基本操作

      确定注射物的存在

      假设目标注入点是 http://192.168.98.100/sqli-labs/Less-1/?id=1 ,判断具是否存在注入的命令如下所示.

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1

      以下资料显示注射液的存在

      当注射点后面的布体大于两倍时,必须按下列方式进行双重标注

      不。

      sqlmap.py -u “[http://192.168.98.100/sqli-labs/Less-1/?id=1&uid=2”](http://192.168.98.100/sqli-labs/Less-1/id=1&uid=2 “http://192.168.98.100/sqli-labs/Less-1/id=1&uid=2"”)

      可以看到,在运行确定是否存在插入句子后,“爆破”大量代码,下面是如何分析代码对我们的反馈。这里有三处需要选择的地方:第一处的意思为检测到数据 库可能是MySQL,是否需要学随检测其他数据库;第二处的意思是在"level riski"的情况下,是否检测所有与MySQL相符的 payloads;第三个意味着存在一个数字ID漏洞,是否继续测试其他参数,默认情况下,您可以按返回键

      2.确定文本中的请求是否存在

      从文件中 लोडHTTP请求,SQLMap可以从文本文件中获取HTTP请求,因此没有其他参数(如cookie、 POST数据等)设置,txt文件的内容是网页数据包

      下面是确定注射是否存在的指示,并显示运行后的结果在图 3-6中。 -r通常用于保存饼干注射。

      sqlmap.py -r desktop/1 .txt

      3.在当前用户下查询所有数据库

      确定注射后网站的存在,并用于查询当前用户下的所有数据库。如果当前用户有权限制包含所有数据库列表信息的表的阅读,则该命令可以用于列表所有数据库,例如图

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --dbs

      查询了17个数据库和所有数据库的数据库名称。 继续插入--dbs被缩写为-Dxx,这意味着继续查询XX数据库中的其他数据

      4.在文档库中获取表名

      该命令的功能是指定数据库中的所有表名,然后完成以下所示的查询。

      如果该命令不包含指定特定数据库的-D引用,那么SQLM将列出在命令库中的所有库的表,例如图

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 -D 2web --tables

      您可以在两个Web数据库中看到一个表名。 在继续插入时,-tables被缩写为-T,意思是继续在表中查询。

      在表中获取字段名称

      这个命令的功能是在完成查询后查询表中的所有字段名称,如下面所示。 执行该命令的结果

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 -D 2web -T article --columns

      可以看到在2web数据库中的article表中一共有4个字段。在后 续的注入中,–columns缩写成-C。

      6、获取字段内容

      该命令在完成查询该字段名称后获取该字段中的具体数据信息,如下图所示。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 -D 2web -T article -C author,i

      d --dump

      您必须在此下载的数据是2web数据库中的条目表中的作者和ID字段的值

      获取数据库的所有用户

      该命令的功能是列出手动库的所有用户,如下面所示。 当当前用户有权限制包含所有用户列表的阅读包的权限时,该命令可以用于列出所有管理的用户。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --users

      您可以看到当前用户帐户是root

      获取数据库用户密码

      这个命令的功能是列出数据库用户密码,如下面所示。 如果当前用户有读取用户密码的权限,SQLMap首先列出用户,然后列出Hash,并试图解开它。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --passwords

      可以看到,密码使用MySQL5加密,可以在www.cmd5.com中自行解密。

      获取当前网站数据库的名称

      使用此命令列出当前站点使用的数据库, 如下面所示.

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --current-db

      从图3-13可以看出,数据库是安全的

      获取当前网站数据库的用户名

      使用此命令,您可以列出当前网站使用的数据库用户,如下面所示。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1

      您可以看到,用户是 root@localhost

      第二,SQLmap的步骤操作

      第五级:探索级

      参数-5级指应进行的测试级别,总共5级(1~5),不能加

      level,默认是1.SQLMap使用的Payload可以在xml/payloads.xml中看至,也可以

      根据相应的格式添加自己的Payload,其中5级包含的Payload最多,会自动破解出cookie、XFF等头部注入。当然,level 5的运行速度也比较慢。

      这个参数将影响测试的注射点,测试GET和 POST数据,HTTP Cookie在2级测试,HTTP User-Agent/Referer头在3级测试。 总之,不确定该 payload 或 参数是注射点时,为了保证全面性,建议使用高级别值,即5。

      2--is-dba:当前用户是否是管理员

      该命令用于查看当前帐户是否是一个数据库管理员帐户,如下图所示。在这种情况下,该命令的输入返回图表所示的Ture。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --is-dba

      3,角色:列表数据库管理员的角色

      此命令用于查看数据库用户的角色。如果当前用户有权限制包含所有用户的表的阅读,该命令的输入列出每个用户的角色,也可以使用-U参数指定您想要查看的用户字符。此命令只适用于当前数据库是Oracle。这个情况下输入命令的结果在图中显示

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --roles

      4、–referer: HTTP Referer头

      当-level参数设置为3或以上时,SQLMap可以在请求中伪造HTTP中的引用,试着给裁判注射它.引用命令可以用来欺骗,例如 --referer http://ww.Baidu.com

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --level 3 --referer http://www

      .baidu.com

      5.--sql-shell:运行自定义SQL声明

      该命令用于执行指定的SQL语句,如下所示,假设执行select * from users limit 0, 1语句,结果如图所示

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --level 3 --sql-shell

      图3-17执行指定的SQL声明

      6.--os-cmd,--os-shell:执行任何操作系统命令

      当数据库为 MySQL 、 PostgreSQL 或 Microsoft SQL Server 时,当前用户有权使用特定功能,如果数据库是MySQL,PostgreSQL,SQLMap将上传一个二进制库,使用用户定义的函数 sys_exec( ) 和 sys_eval( ),这两个函数都可以执行系统命令。在Microsoft SQL Server中,SQLMap将使用xp_cmdshell存储过程,如果禁用(默认在Microsoft SQL Server 2005和以上禁用),那么SQLMap将重新启用它;如果它不存在,会自动创建.

      --os-shell参数可以用来模拟一个真正的壳并输入您要执行的命令。当多个声明无法执行(例如 PHP 或 ASP 的后端数据库是 MySQL ) 时, INTO OUTFILE 仍可写入可写入目录中,创建一个Web后门。 --os-shell支持ASP和ASR。 四个语言:NET、JSP和PHP(如果您想执行参数,需要数据库管理员的特权,--is-dba的值必须是真。

      7,–文件读取:从数据库服务器上读取文件

      该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或MicrosoftSQL服务器时,当前用户有权限制使用特定功能,可读的文件可以是文本,它也可以作为二进制文件。 下面是Microsoft SQL Server 2005的例子检查-file-read参数的使用情况。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --file-read “C:/key.php” -v 1

      例如,目标服务器.txt文件的测试是本地储存的,可用于查看

      8.-file-write –file-dest:将文件上传到数据库服务器上

      这个命令用于写本地文件到服务器上,当存储器为MySQL、PostgreSQL或MicrosoftSQL服务器时,当前用户有权限制使用特定功能,上传的文件可以是文本,它也可以是一个二进制文件。下面是f MySQL对-file-write-file-dest参数的使用进行审查的一个例子。

      sqlmap.py -u http://192.168.98.100/sqli-labs/Less-1/?id=1 --file-write “C:/Users/cuiyi/Desktop/1.txt” --file-dest “C:/2.txt” -v 1

      例如,在本地桌面上取1。 一个txt文件被上传到C服务器,名为2.txt

      3.SQLMap自旋脚本篡改的解释

      SQLmap默认使用CHAR()函数来防止单个参数出现,注射数据没有修改,读者也可以使用-tamper参数来修改数据,以绕过WAF等设备,其中大多数尝试通过替换攻击负载字符编码以常规模块绕过WAF的检测规则。命令如下所示。

      Sqlmap.http://example.com --tamper "module name"

      目前,官方可用的格式是53个绕过脚本, 遵循伪造脚本格式.

      不难看出,一个最小的tamper脚本结构为priority变量定义和

      dependencies, tamper函数定义。

      优先级定义了一个脚本的优先级, 用于多个篡改脚本.

      依赖函数声明脚本的适用范围/不可应用范围,它可以是空的。

      这里是一个围绕一个翻译字符包装的脚本的例子。tampe绕过脚本主要由dependencies和tamper两个函数构成。def tamper(payload, **kwargs)函数接收游戏载荷, **kwargs返回payload。下面的代码意味着按规则匹配所有字符。将攻击负载中的所有字符转换为大写字母.

      def tamper(payload, kwargs): retVai=payload

      if payload**

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30958.html

          热门文章

          文章分类