复现了三道题,其他的都关环境了,记录一下复现的这三道吧。
A Simple CMS
在网上找到的onethink的漏洞分析文章
https://bbs.ichunqiu.com/thread-4918-1-1.html
这个是原理相同的,只不过是thinkphp
通过这些我们知道,问题是出在缓存的存储上,我们的用户名被简单的反序列化存储进了缓存文件中。所以要getshell的话我们只需要通过用户名传入webshell。但是这里有个条件,我们必须能猜到缓存文件的名字。
在题目的根目录下扫到 www.zip 得到题目的源码,在这里我们看到filename的命名规律,以及目录。推测这里的源码和线上是一样的,所以条件满足。
我们在本地测试的时候,删除 Application/Install/Data/install.lock 文件,然后通过install.php安装,随后通过在本地生成缓存文件来预测题目的缓存文件,最后代码执行拿flag。
由于用户名有长度限制,所以分两次注册。第一次%0a%0d$x=$_GET[x];\\
,第二次%0a%0deval($x);\\
注册之后必须要登录一下,这样就把webshell写入了缓存文件中了。
之后在题目中重复步骤,就可以拿到webshell,执行代码搜索flag
Baby Web
这道题一开始想法是通过收集信息社工得到flag……,先是看到BabyWeb@my.lol,然后访问my.lol可以得到一个qq邮箱,结果这个qq没什么东西,思路就断在这里了。
参考了其他人的writeup,发现要通过这些信息猜测后台,爆破密码……像这种信息量较少的题目,都会有一些扫目录,扫端口,收集子域名之类的操作。
输入http://106.75.2.4/babyweb ,自动跳转到http://106.75.2.4/babyweb/login.php ,看了一个writeup有的队伍能直接根据收集的信息爆破出用户名和密码。。。这操作太强了,我是搞不出来,所以就按照常规操作扫端口。
根据扫出来的结果可以看到开放了3306端口,使用hydra爆破之。这个我在一开始的时候爆破的是root用户,结果看提示已经改成另外的用户了……哭唧唧,最后是在writeup的帮助下知道了用户名为babyweb,这个可以通过网站的信息推测出来。
拿到密码之后,连接数据库。
然而并没有某writeup中所说的用户名密码,可能被删了,所以这里就只能直接用writeup中的用户名密码登后台了。
后台有个简单的文件上传,然后后缀有限制只能是图片后缀,这里上传之后没有路径,但是我们有数据库的数据,根据数据库中的数据我们可以得到上传后文件的文件名再加上img路径就可以知道文件的路径。再看看上传的类型中还有htaccesss,这里就是文件上传的漏洞利用。
通过上传htaccess文件来让一些后缀得到解析。
1 | <FilesMatch "abc"> |
最后上传.abc为后缀的webshell即可
pentest
网站使用metinfo模板,在网上搜索一番,看到了几个SQl注入的洞,试了试都不行,索性放弃,看writeup。
扫描目录扫出file/file.php,能删除文件,然后没有对..过滤导致可以跨目录删除文件…… emmmm 看来是为了比赛额外添加了一个文件删除,这个如果字典没扫出来就根本无法下手了。
删除文件的路径中有对./
的过滤,所以最后删除的路径为...//xxxx/xxx
扫到这个之后,在之前的metinfo漏洞里面有讲删除install.lock文件,导致重装的问题,再加上metinfo对数据库参数过滤不严的问题,只要数据库配置参数中任意一项填入一句话木马#*/@eval($_REQUEST[xxx]);/*
,就可以成功getshell。
虽然安装步骤没有走完,但是只要数据库创建成功,就可以通过config/config_db.php拿shell