我试图在网站上利用SQL注入(当然是以Science的名义)。经过一些测试,我发现后端是如何工作的。 SQL查询形成如下:
%.2f
其中$query = 'SELECT * FROM TABLE WHERE ID ='.$segment
是来自URL的第二个路径段。如果$segment
等于10.符号http://vict.im/menu/10
,/
及其后的所有内容都会被忽略,因此前一个链接#
和http://vict.im/menu/10/blah-blah
会给出相同的内容结果
这里的问题是段解析器不会http://vict.im/menu/10#blah-blah
该段。如果我发送URLdecode()
,它将被编码为.../menu/30 ;
,并且MySQL会将其解释为除法的余数,返回ID = 10的结果。同样的原因.../menu/30%20;
未被替换为+
空白,它作为一个运算符。
因此,需要进行不包含通常由Web浏览器编码的任何符号的注入。例如,.../menu/(10)or(1=1)
,基于布尔的注入.../menu/9+(USER()='Smith')
和.../menu/CONCAT('1','0')
可以正常工作。
如何向Sqlmap解释这种情况?这有篡改脚本吗?还有其他方法可以绕过这个"保护"?
P.S。似乎可以使用以下符号:! $ & ' ( ) * + , : ; = ? @ [ ]
加mixalpha-numeric。