我想构建一个场景,允许我公开服务器的其他数据(用于演示目的)。服务器调用易受攻击的SQL代码:SQL注入,忽略第一个选择命令
EXEC my_storeProc '12345'
其中“12345”(不是单引号)是参数。这将执行一个SELECT语句。我想消除这个执行,而是调用我自己的select语句,但是服务器端代码将只接受前面提到的EXEC调用中包含的第一个select语句。调用第二个语句很简单:
EXEC my_storeProc '12345 ' select * from MySecondTable--
(中 - 在年底将阻止服务器添加到防止错误关闭单引号)。我的问题是,虽然有2个选择语句,服务器将只解析第一个。有没有办法在不抛出错误的情况下取消第一次EXEC调用,以便取而代之的是第二次调用?也许即使是一个UNION,但是我只能用一个变量开放来利用(在这种情况下变量是12345),我可以做的并不多。
我给你在这一个答案,看如何......热心人回答它,它也是情理之中。所以基本上,我们将使用URL来修改存储过程,然后使用另一个URL来执行它。这不是一个坏主意。无论哪种方式,我显示漏洞。谢谢! – Lukas
如果您想要使用SELECT语句进行反馈,那么您必须创建一个反馈回送的方式,但是如果要演示UPDATE,DELETE或MODIFY,则不需要返回结果集和您的演示仍然有效。制作一个表格,用于跟踪用户信息或所欠的费用,然后删除或修改您的帐户或您的姓名。 – EMUEVIL