ctfshow baby杯web

baby_captcha

点击首页的无脑给了一个500常用5密码。看来是要爆破密码了。

在这里插入图片描述
然后练习下听力,根据放的声音写出来验证码,抓包进行爆破,payload用给的500常用密码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
拿到密码fire,登录就有flag。

ctfshowcms

简略审计了下代码,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

babyphp

过了一遍代码,发现可以利用file_put_contents写文件。
两个前提:case 'upload'return !preg_match('/php/i', $input)为true。
大家可以试一下

<?php
var_dump(highlight_file(__FILE__));   

返回的结果是true,所以第一个我们只要不给a传值就可以了。
绕过第二个限制可以上传.user.ini,内容为auto_prepend_file=2.jpg,接着上传2.jpg,内容为<?=`ls /`;?>刷新一下就可以了。

完美的缺点

题目设置了open_basedir,所以我们写文件和include都只能限制在该目录下。文件名和内容都有长度限制。
但是我们发现只要post传一个ctfshow就可以使用include函数,那我们试试可不可以使用data伪协议呢。
因为有长度限制我们可以这样写file_name=data:,<?=`ls`;
在这里插入图片描述

接着打开flag.php,file_name=data:,<?=`nl *`;在这里插入图片描述
记得bp里面url编码下。
当然data伪协议都可以用了,http自然也可以。
我们先来看下最短的ip的情况下也就是http://1.1.1.1长度为14,所以如果你vps的ip足够小,就可以直接远程文件包含了。如果比较大的话我们可以试试转成10进制或者16进制。
https://tool.520101.com/wangluo/jinzhizhuanhuan/

猜你喜欢

转载自blog.csdn.net/miuzzx/article/details/117449581