如何利用“EXEC @sql”?

Posted

技术标签:

【中文标题】如何利用“EXEC @sql”?【英文标题】:How do I exploit "EXEC @sql"? 【发布时间】:2010-09-16 22:07:28 【问题描述】:

我的同事对他的代码不安全,并允许用户上传要在服务器上运行的 SQL 文件。 他去掉了文件中的所有关键字,例如"EXEC", "DROP", "UPDATE", "INSERT", "TRUNC"

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

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

但他可能会循环过滤掉所有内容。

有没有办法利用我同事的代码?还是过滤掉关键词就够了?

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

【问题讨论】:

+1 对于这样一个很棒的问题。我们应该更频繁地剥削我们的同事。 只需给我们URL 并记录上传! 至于您的第一次尝试:您是在告诉我们您的同事在那里找到EXEC 之后仍然尝试执行一段上传的代码吗? 目前我不确定他是如何做到的。他忘记将带有验证的文件添加到颠覆 :( 所以我无法检查他。 但是,是的,编码人员愚蠢到认为他们可以通过黑名单摆脱这种情况,因此经常采用诸如幼稚剥离之类的方法。 【参考方案1】:

    告诉你的同事他是个白痴。

    做一个obfuscated SQL query,类似:

    select @sql = 0x44524f5020426f627350616e7473

这将需要根据其余代码的外观进行一些调整,但我们的想法是将您的代码编码为十六进制并执行它(或者更确切地说,让它执行)。还有其他方法可以混淆要注入的代码。

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

【讨论】:

嘻嘻 - 以防你不知道那个十六进制,当翻译成 ascii 时,它会转化为 drop bobspants 很好地调用了用户帐户。这肯定会解决他的问题。【参考方案2】:

看看ASCII Encoded/Binary attacks ...

应该说服你的朋友他注定要失败.. ;)

这里有一些关于如何编码字符串的帮助..Converting a String to HEX in SQL

【讨论】:

以上是关于如何利用“EXEC @sql”?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用ArcGis生成TPK

如何利用MSSQL入侵

如何利用Zotero在Word中插文献

闲置电脑再利用-可道云

如何利用dns漏洞入侵

利用epplus在EXCEL中插入图片如何让其不随