时间:2021-07-01 10:21:17 帮助过:21人阅读
此次需求,是传入集群名给sqlmap使用,让发包函数的QPS限制装饰器拿到集群名
一开始研究了一会儿的数据跳着传递,后来发现sqlmap本身的conf是一个全局实例,在开始的时候进行初始化,在之后的各个流程中都有引用。所以集群名或者其他数据可以通过参数的形式传入conf配置里,再在其他地方调用。
- <code class="language-python"># sqlmap\lib\parse\cmdline.py
- target.add_argument("--cluster", dest="cluster", help="Target cluster(e.g. test)")
- </code>
添加参数就到了conf里了?
- <code class="language-python">sqlmap.py
- def main
- 148行
- initOptions(cmdLineOptions)
- \lib\core\options
- def initOptions
- 2638行
- _mergeOptions(inputOptions, overrideOptions)
- def _mergeOptions(inputOptions, overrideOptions):
- 2197行
- for key, value in inputOptionsItems:
- 将参数挨个输入到conf里
- </code>
ps: 如果sqlmap输入不想要的参数
- <code class="language-python">lib\parse\cmdline
- 987行
- SystemExit报错
- try:
- (args, _) = parser.parse_known_args(argv) if hasattr(parser, "parse_known_args") else parser.parse_args(argv)
- except UnicodeEncodeError as ex:
- dataToStdout("\n[!] %s\n" % getUnicode(ex.object.encode("unicode-escape")))
- raise SystemExit
- except SystemExit:
- if "-h" in argv and not advancedHelp:
- dataToStdout("\n[!] to see full list of options run with ‘-hh‘\n")
- raise
- </code>
- <code class="language-python">\lib\request\connect
- 行 248
- @staticmethod
- def getPage(**kwargs):
- kwargs["cluster"] = conf.cluster if conf.cluster else ""
- return Connect._getPage(**kwargs)
- @staticmethod
- @qps_config
- def _getPage(**kwargs):
- """
- This method connects to the target URL or proxy and returns
- the target URL page content
- """
- </code>
SQLMAP 弹二 传入数据全局使用
标签:input 初始 top 函数 调用 url lin code with