zoukankan      html  css  js  c++  java
  • SQLMAP 弹二 传入数据全局使用

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

    0X01

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

    0X02 sqlmap 传入数据给conf

    # sqlmaplibparsecmdline.py
    
    target.add_argument("--cluster", dest="cluster", help="Target cluster(e.g. test)")
    

    添加参数就到了conf里了?

    sqlmap.py
    def main
    148行
    initOptions(cmdLineOptions)
    
    libcoreoptions
    def initOptions
    2638行
    _mergeOptions(inputOptions, overrideOptions)
    
    def _mergeOptions(inputOptions, overrideOptions):
    2197行
    for key, value in inputOptionsItems:
    将参数挨个输入到conf里
    

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

    libparsecmdline
    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("
    [!] %s
    " % getUnicode(ex.object.encode("unicode-escape")))
                raise SystemExit
            except SystemExit:
                if "-h" in argv and not advancedHelp:
                    dataToStdout("
    [!] to see full list of options run with '-hh'
    ")
                raise
    

    0X03 传给装饰器

    lib
    equestconnect
    行 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
            """
    
    
  • 相关阅读:
    c++ 两个set合并
    L2-2 小字辈 (25 分)
    L1-1 天梯赛座位分配
    c++ 用 0x3f3f3f3f 设定最大int值的优点
    Treap(树堆)(转)
    new一个二维数组(转)
    Laplacian matrix(转)
    寒假计划制定
    寒假集训日志(八,九,十)——浪浪浪
    寒假集训日志(七)——数据结构
  • 原文地址:https://www.cnblogs.com/huim/p/13073078.html
Copyright © 2011-2022 走看看