当前位置:Gxlcms > 数据库问题 > SQLMAP 弹二 传入数据全局使用

SQLMAP 弹二 传入数据全局使用

时间:2021-07-01 10:21:17 帮助过:21人阅读

此次需求,是传入集群名给sqlmap使用,让发包函数的QPS限制装饰器拿到集群名

0X01

一开始研究了一会儿的数据跳着传递,后来发现sqlmap本身的conf是一个全局实例,在开始的时候进行初始化,在之后的各个流程中都有引用。所以集群名或者其他数据可以通过参数的形式传入conf配置里,再在其他地方调用。

0X02 sqlmap 传入数据给conf

  1. <code class="language-python"># sqlmap\lib\parse\cmdline.py
  2. target.add_argument("--cluster", dest="cluster", help="Target cluster(e.g. test)")
  3. </code>

添加参数就到了conf里了?

  1. <code class="language-python">sqlmap.py
  2. def main
  3. 148行
  4. initOptions(cmdLineOptions)
  5. \lib\core\options
  6. def initOptions
  7. 2638行
  8. _mergeOptions(inputOptions, overrideOptions)
  9. def _mergeOptions(inputOptions, overrideOptions):
  10. 2197行
  11. for key, value in inputOptionsItems:
  12. 将参数挨个输入到conf里
  13. </code>

ps: 如果sqlmap输入不想要的参数

  1. <code class="language-python">lib\parse\cmdline
  2. 987行
  3. SystemExit报错
  4. try:
  5. (args, _) = parser.parse_known_args(argv) if hasattr(parser, "parse_known_args") else parser.parse_args(argv)
  6. except UnicodeEncodeError as ex:
  7. dataToStdout("\n[!] %s\n" % getUnicode(ex.object.encode("unicode-escape")))
  8. raise SystemExit
  9. except SystemExit:
  10. if "-h" in argv and not advancedHelp:
  11. dataToStdout("\n[!] to see full list of options run with ‘-hh‘\n")
  12. raise
  13. </code>

0X03 传给装饰器

  1. <code class="language-python">\lib\request\connect
  2. 行 248
  3. @staticmethod
  4. def getPage(**kwargs):
  5. kwargs["cluster"] = conf.cluster if conf.cluster else ""
  6. return Connect._getPage(**kwargs)
  7. @staticmethod
  8. @qps_config
  9. def _getPage(**kwargs):
  10. """
  11. This method connects to the target URL or proxy and returns
  12. the target URL page content
  13. """
  14. </code>

SQLMAP 弹二 传入数据全局使用

标签:input   初始   top   函数   调用   url   lin   code   with   

人气教程排行