【问题标题】:Can I match a string to a certain subtree of the AST?我可以将字符串与 AST 的某个子树匹配吗?
【发布时间】:2021-02-25 07:05:59
【问题描述】:

我正在尝试使用antlr4(+python3)来检测sql注入,说现在我得到了后端SQL命令“SELECT * FROM AAA WHERE BBB = ''”,用户输入“CCC”。

现在解析树看起来像这样:

我的问题是,我可以将“CCC”(用户输入)直接匹配到子树“谓词”(见上图),即在“谓词”处进入解析树吗?

我有几个想法:

  1. 重写语法文件
  2. 使用访问者并跳过肯定出现在“谓词”之前的节点

这些想法很复杂,那么我应该在现有文献中寻找什么?或任何其他建议?

【问题讨论】:

  • 什么是“预测”?这是从哪里来的?
  • "predict" 是笔误,我改成了"predicate",就是图中所示AST的一个节点。抱歉打错了。

标签: python python-3.x sql-injection antlr4 abstract-syntax-tree


【解决方案1】:
  1. 使用访问者并跳过肯定出现在“谓词”之前的节点

当然可以:当遍历解析树并遇到用户输入时,只需“遍历”节点,直到遇到您感兴趣的节点。遍历解析树时,ANTLR 会为您提供当前解析上下文.此上下文有一个 parent 上下文,您可以使用它“走”上树。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多