我的同事对他的
代码不安全,并允许
用户上传要在服务器上运行的
sql文件.
他
删除了
文件中的任何关键词,如“EXEC”,“DROP”,“UPDATE”,“INSERT”,“TRUNC”
我想通过利用他的EXEC(@sql)向他展示他的方式的错误
我的第一次尝试将是’EXEXECEC(N”SELECT”你DRDROPOPped the ball Bob!”)’
但他可能会在循环中过滤掉所有内容.
有没有办法可以利用我的同事的代码?或者过滤掉关键词?
编辑:我让他检查他的代码.如果代码包含关键字,则不执行它.我还在试图弄清楚如何使用二进制转换来利用它.
>告诉你的同事他是个白痴.
>做一个
obfuscated SQL query,类似于:
选择@sql = 0x44524f5020426f627350616e7473
这将需要一些调整,具体取决于代码的其余部分,但我们的想法是用十六进制编码代码并执行它(或者更确切地说,让它执行).还有其他方法来混淆要注入的代码.
你那里有一个巨大的安全漏洞.有趣的是,这甚至不需要重新发明.阻止此类事件发生的正确方法是创建和使用具有正确权限的帐户(例如:只能对表x,y和z执行选择查询).