2

我正在尝试在网站上利用 SQL 注入(当然是以 Science 的名义)。经过一些测试,我发现了后端是如何工作的。SQL 查询是这样形成的:

$query = 'SELECT * FROM TABLE WHERE ID ='.$segment

$segmentURL 的第二个路径段在哪里。如果http://vict.im/menu/10它等于 10. Symbols /#它们之后的所有内容都将被忽略,所以前面的链接,http://vict.im/menu/10/blah-blahhttp://vict.im/menu/10#blah-blah给出相同的结果。

这里的问题是段解析器没有URLdecode()段。如果我发送.../menu/30 ;它,它将被编码为.../menu/30%20;,并且 MySQL 会将其解释为除法的余数,返回 ID = 10 的结果。同样的原因+,它不会被替换为空格,它作为一个运算符工作。

因此,需要进行不包含任何通常由 Web 浏览器编码的符号的注入。例如,.../menu/(10)or(1=1)基于布尔值的注入.../menu/9+(USER()='Smith').../menu/CONCAT('1','0')工作正常。

我该如何向 Sqlmap 解释这种情况?是否有针对此的篡改脚本?还有其他方法可以绕过这种“保护”吗?

PS似乎可以使用以下符号:! $ & ' ( ) * + , : ; = ? @ [ ]加上mixalpha-numeric。

4

0 回答 0