最近闲来无事,看到青少年CTF平台,感觉对新手还是比较友好的!于是便再次开启了刷题之路,几乎不曾复现过漏洞的我,看到了一系列的帝国/骑士CMS的漏洞复现题目
青少年CTF平台:https://www.qsnctf.com/challenges
首页如上,在题目的链接处,有hint!我们先不看;先看看网页的最先面是否存在提示:
我们可以知道该网站应用的是帝国CMS7.5的版本;百度搜了一波帝国CMS存在那些漏洞,发现漏洞有点多啊!找了相关资料,找到了后台的登陆界面/e/admin/index.php
之后刚要尝试注入,发现界面的最下方提示:获取flag的思路并不在这里,也就是说可能不存在注入,因此就先测试注入了,试一下弱口令
root root
admin admin
admin 123456(这个成功登录到了网站管理后台!)
(其实hint说了,扫描目录试一下嘛!)
发现泄露了源码;
这里存在的漏洞为后台Getshell;
拿到源码之后,我们进行对应的代码审计:在/e/admin/ecmsmod.php文件中:
//导入模型
elseif($enews=="LoadInMod")
{$file=$_FILES['file']['tmp_name'];$file_name=$_FILES['file']['name'];$file_type=$_FILES['file']['type'];$file_size=$_FILES['file']['size'];LoadInMod($_POST,$file,$file_name,$file_type,$file_size,$logininid,$loginin);
}
跟进LoadInMod方法:(来到/e/admin/moddofun.php文件)
虽然限制了文件的后缀名为".mod"
同时对文件名进行了相关的加密,无法猜测文件名
但是最终通过include包含了这个文件,换句话说就是把里面的代码当作php进行执行
最终我们可以直接上传一个文件名为xx.php.mod的文件,里面是我们要执行的php代码:
");?>
上传成功之后,我们访问/e/admin/shell.php即可执行我们的一句话木马;
成功getshell,之所以shell.php文件会在/e/admin/目录下生成,是因为我们最开始上传的时候,就是在/e/admin/目录下,因此生成的shell.php也在这个目录下面。之后拿flag(根目录下)