我如何利用"EXEC @sql"?

Bif*_*iff 8 t-sql sql-server validation sql-injection dynamic-sql

我的同事对他的代码不安全,并允许用户上传要在服务器上运行的SQL文件.他删除了文件中的任何关键词,如"EXEC", "DROP", "UPDATE", "INSERT", "TRUNC"

我想通过利用他的方式向他展示他的方式的错误 EXEC ( @sql )

我的第一次尝试将是 'EXEXECEC (N''SELECT ''You DRDROPOPped the ball Bob!'')'

但他可能会在循环中过滤掉所有内容.

有没有办法可以利用我的同事的代码?或者过滤掉关键词?

编辑:我让他检查他的代码.如果代码包含关键字,则不执行它.我还在试图弄清楚如何使用二进制转换来利用它.

Nul*_*ion 5

  1. 告诉你的同事他是个白痴.

  2. 做一个混淆的SQL查询,例如:

    select @sql = 0x44524f5020426f627350616e7473

这将需要一些调整,具体取决于代码的其余部分,但想法是用十六进制编码代码并执行它(或者更确切地说,让它执行).还有其他方法来混淆要注入的代码.

你那里有一个巨大的安全漏洞.有趣的是,这甚至不需要重新发明.阻止此类事件发生的正确方法是创建和使用具有正确权限的帐户(例如:只能select对表x,y和z 执行查询).