- baby_captcha
- ctfshowcms
- 应该不难
- babyphp
- 完美的缺点
点击首页的无脑给了一个500常用5密码。看来是要爆破密码了。
然后练习下听力,根据放的声音写出来验证码,抓包进行爆破,payload用给的500常用密码。
拿到密码fire,登录就有flag。
简略审计了下代码,index.php中存在文件包含。install下的index.php存在任意文件写入,并且内容可控。 因为文件包含的地方加了目录和后缀,所以比较难控制。我们先来看下写文件的地方。 首先当前目录下不能存在installLock.txt,我们可以先直接访问下/install/index.php,发现回显的是
你已经安装了ctfshowcms,请勿重复安装。
想到前面有个文件包含,正好可以绕过这个限制(因为存在文件包含的index.php所在的路径下没有installLock.txt),/?feng=../install/index
。接着为了不die掉我们把那些参数都给赋值。
最后发现在后面还是会die掉。看来写文件的想法也是走不通的了。
但是我们往上看看,发现进行数据库连接的时候我们三个字段都可以控制。也就是说我们可以让网站连接任意的sql服务器。这时候我们可以搭建一个恶意服务器去读文件。 首先需要在自己的vps上设置数据库可以被远程连接。这个网上文章挺多的,大家可以自己找一下。 接着需要用到个脚本(R1师傅给了个可用的)
https://github.com/MorouU/rogue_mysql_server/blob/main/rogue_mysql_server.py
修改下里面的端口和要读的文件,端口改成3307,其他的也可以,只要不是3306。在vps上运行。
接着post传值,数据库用户名和密码是自己vps上的。 就可以 接收到flag了。
参考文章https://www.dz-x.net/t/1017/1/1.html
过了一遍代码,发现可以利用file_put_contents写文件。 两个前提:case 'upload'
和return !preg_match('/php/i', $input)
为true。 大家可以试一下
刷新一下就可以了。 完美的缺点
题目设置了open_basedir,所以我们写文件和include都只能限制在该目录下。文件名和内容都有长度限制。 但是我们发现只要post传一个ctfshow就可以使用include函数,那我们试试可不可以使用data伪协议呢。 因为有长度限制我们可以这样写
file_name=data:,
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?