如何在 Stata 的 SQL 注入中匹配字符串?

How do match strings inside SQL injections in Stata?

提问人:Praanto 提问时间:4/25/2023 最后编辑:Nick CoxPraanto 更新时间:4/30/2023 访问量:58

问:

我正在尝试通过以下方式在 Stata 中注入 SQL 语句:

obdc load, exec('"select * from table_name as u, l2010 as lv where u.IntUft='I'"') dsn("some_db") clear

但这给了我一个错误,说.r(198)table() or exec() is required

当我尝试使用整数的相同代码时,它确实有效。这意味着,

obdc load, exec('"select * from table_name as u, l2010 as lv where u.Ar=2000"') dsn("some_db") clear

工程。

关于如何在 Stata 中比较 SQL 语句中的字符串的任何想法?

sql stata sql 注入

评论

1赞 nbk 4/25/2023
只有双引号不是很可怕吗obdc load, exec("select * from table_name as u, l2010 as lv where u.IntUft='I'") dsn("some_db") clear
0赞 Nick Cox 4/30/2023
请回复@TheIceBear的有用回答。

答:

2赞 TheIceBear 4/25/2023 #1

我自己没有使用过,所以我不确定它是否是完整的解决方案,但我发现了两个 Stata 语法错误。obdc

在 Stata 中,复合字符串中的前导单引号必须是反引号。所以你需要.`exec(`"select

同样,在引用本地宏时,您还需要从反引号开始。所以你需要.u.IntUft=`I'"'

在此处查看完整示例:

obdc load, exec(`"select * from table_name as u, l2010 as lv where u.IntUft=`I'"') dsn("some_db") clear

不确定是否需要复合字符串,因此修复本地引用可能就足够了。

尽管从技术上讲也存在语法错误,但第二个示例的工作方式必须归因于命令处理/清理字符串输入的方式。obdc