情况如下:
我已经确定了sql注入攻击向量,并且有关于目标表的以下信息:
E.g。以下搜索查询按预期工作:
test' AND ROWNUM <= 5 ORDER BY 6--
EDIT-FROM-位置:
在评论帮助之后,确认以下查询有效:
test' UNION ALL SELECT null,null,null,null,null,null FROM dual--
(我失踪了FROM dual
部分。非常感谢@kordirko!)
此查询在输出表中添加一条空记录(它在视觉上可见),所以我肯定是在正确的轨道上!
现在,以下行也有效:
test' UNION ALL SELECT null,null,null,n't',null,null FROM dual--
我正确识别了第4列,现在它显示大写(?)字母T
,我希望它出现在那里。到现在为止还挺好。但是当我输入超过1个字符的任何字符串时,它会出错!所以下面给出了一个错误:
test' UNION ALL SELECT null,null,null,n'test',null,null FROM dual--
我不是SQL注入方面的专家,尤其是ORACLE(虽然有使用MsSql的经验)。
我认为这个问题与unicode-ansi-whateverencoding相关。对于其他行(在添加UNION ALL SELECT
之前由原始查询选择),第4列提供多字符正常字符串。但是当我尝试注入所需的字符串时,只有当它是一个字符时它才有效,并且还会以大写字母显示它。我认为这必须是一些编码问题。我刚刚发现在搜索和挣扎1小时后我需要n
前缀用于unicode字符串。也许一些Oracle大师可以很快发现我的查询中有什么错误?