绿盟杯Web部分Writeup
Web50
http://116.62.63.190/01b2962787ccc75f/web1/
这题是个签到题,直接查看返回包即可获得flag
Web350
http://116.62.63.190:8000/56631c0afe39dfe8/web2/ping.php?ip=127.0.0.1%0acacatt ping.php
由题目的意思可以知道,这应该是个命令执行
题目过滤了|之类的字符,我们直接使用%0a绕过
ip=127.0.0.1%0als
得知目录情况
然后又是各种尝试,发现more没被过滤,使用more获取flag(其实vi也没过滤,不知道为什么当时我测试的时候不行)。
Ps:我写这个WP的时候flag已经被搅屎棍删了所以没法截图
我们通过more ping.php发现了它的过滤规则,发现cat只是被过滤为空
那么我们又可以使用另一种方法绕过cacatt
Web150
http://116.62.63.190/82d66810aa826365/web3/
查看源文件获取到源码通读代码我们知道,需要构造一个name不等于password的账号密码,但是它们的md5值需要是一样的,于是果断想到两个数组。
我们构造name[]=1&password[]=2 来绕过这里 。然后接下来就是id的判断了。我们发现id要不等于str(72)但是要等于int(72) ,那就很明确了,这里需要用到PHP的弱类型。我们构造id=72.00
最终payload name[]=1&password[]=2&id=72.00&login=Check
Web300
http://116.62.63.190/85e34e2e3319ab7d/web4/upload/1.phtml
fuzz后发现使用.phtml即可绕过后缀限制
使用<script>绕过对<?php的过滤
payload <script language="php">phpinfo();</script>
Web500
这题各种坑,各种XSS、文件包含什么的(其实就是个简单的搜索框注入)
通过文件包含得知flag在数据库里,那么肯定是注入了
找到搜索框注入
http://116.62.63.190:8080/ee00f46afe33f2ff/web6//search.php?search=1
sqlmap跑一下得到flag
Web150
扫了一下目录发现是 .git泄露
得到一个txt,打开之是一个base64加密的
解密得到flag
Web550
根据提示imagemagick,找到之前火极一时的imagemagick命令执行漏洞exp。经测试是没有回显的,bash反弹也不行,所以将命令执行结果请求到自己的站点记录下来就好了。
列目录找到提示flag_in_the_tmp.php,在/tmp下找到了flag.txt
Web400
试来试去并不能任意代码执行,但是能给wget添加额外参数,加-b试了下,无回显,说明wget在后台下载并没有回显。可以用参数-O指定文件名
但是在当前目录是没有权限写的,我以为是整个站点目录都不能写,所以写到了/tmp下,想着怎么配合admin.php包含。最后发现/var/www/html下可写。传小马拿shell,最后flag 在/var/www/html/4b0cf03220fefbf6/web9/flag.php
最后稍稍吐槽一下此次比赛!比赛第一天我们的账号因为密码含有特殊字符,死活登不上然找主办,主办却说没权限,最后导致我们屯了一天的flag当了次火箭队。
然后第二天的时候题目还各种改。Web550一开始目录没权限一直以为是姿势不对,Web400也是一样imagemagick环境都没弄好。。。
http://116.62.63.190/01b2962787ccc75f/web1/
这题是个签到题,直接查看返回包即可获得flag
Web350
http://116.62.63.190:8000/56631c0afe39dfe8/web2/ping.php?ip=127.0.0.1%0acacatt ping.php
由题目的意思可以知道,这应该是个命令执行
题目过滤了|之类的字符,我们直接使用%0a绕过
ip=127.0.0.1%0als
得知目录情况
然后又是各种尝试,发现more没被过滤,使用more获取flag(其实vi也没过滤,不知道为什么当时我测试的时候不行)。
Ps:我写这个WP的时候flag已经被搅屎棍删了所以没法截图
我们通过more ping.php发现了它的过滤规则,发现cat只是被过滤为空
那么我们又可以使用另一种方法绕过cacatt
Web150
http://116.62.63.190/82d66810aa826365/web3/
查看源文件获取到源码
if(isset($_POST['login']))
{
if(isset($_POST['user']))
{
if(@strcmp($_POST['user'],$USER))//USER是被隐藏的复杂用户名
{
die('user错误!');
}
}
if (isset($_POST['name']) && isset($_POST['password']))
{
if ($_POST['name'] == $_POST['password'] )
{
die('账号密码不能一致!');
}
if (md5($_POST['name']) === md5($_POST['password']))
{
if(is_numeric($_POST['id'])&&$_POST['id']!=='72' && !preg_match('/\s/', $_POST['id']))
{
if($_POST['id']==72)
die("flag{xxxxxxxxxxxxx}");
else
die("ID错误2!");
}
else
{
die("ID错误1!");
}
}
else
die('账号密码错误!');
}
}
我们构造name[]=1&password[]=2 来绕过这里 。然后接下来就是id的判断了。我们发现id要不等于str(72)但是要等于int(72) ,那就很明确了,这里需要用到PHP的弱类型。我们构造id=72.00
最终payload name[]=1&password[]=2&id=72.00&login=Check
Web300
http://116.62.63.190/85e34e2e3319ab7d/web4/upload/1.phtml
fuzz后发现使用.phtml即可绕过后缀限制
使用<script>绕过对<?php的过滤
payload <script language="php">phpinfo();</script>
Web500
这题各种坑,各种XSS、文件包含什么的(其实就是个简单的搜索框注入)
通过文件包含得知flag在数据库里,那么肯定是注入了
找到搜索框注入
http://116.62.63.190:8080/ee00f46afe33f2ff/web6//search.php?search=1
sqlmap跑一下得到flag
Web150
扫了一下目录发现是 .git泄露
得到一个txt,打开之是一个base64加密的
解密得到flag
Web550
根据提示imagemagick,找到之前火极一时的imagemagick命令执行漏洞exp。经测试是没有回显的,bash反弹也不行,所以将命令执行结果请求到自己的站点记录下来就好了。
列目录找到提示flag_in_the_tmp.php,在/tmp下找到了flag.txt
Web400
试来试去并不能任意代码执行,但是能给wget添加额外参数,加-b试了下,无回显,说明wget在后台下载并没有回显。可以用参数-O指定文件名
但是在当前目录是没有权限写的,我以为是整个站点目录都不能写,所以写到了/tmp下,想着怎么配合admin.php包含。最后发现/var/www/html下可写。传小马拿shell,最后flag 在/var/www/html/4b0cf03220fefbf6/web9/flag.php
最后稍稍吐槽一下此次比赛!比赛第一天我们的账号因为密码含有特殊字符,死活登不上然找主办,主办却说没权限,最后导致我们屯了一天的flag当了次火箭队。
然后第二天的时候题目还各种改。Web550一开始目录没权限一直以为是姿势不对,Web400也是一样imagemagick环境都没弄好。。。
评论16次
wechall也行,实验吧这两个应该够了
@whitecap100 百度实验吧有“绿盟杯web”题目练手?没找到,给个链接
我是说ctf题目...实验吧有
web550的服务器ip露点了
@whitecap100 百度实验吧有“绿盟杯web”题目练手?没找到,给个链接
要是有题目练一把就更好了
百度实验吧
貌似服务器已关了,不能做题了;楼主可以把离线的MISC及二进制、加解密的题和思路发一下供学xi学xi
misc刚发了
web350 直接使用tail就好 也可以直接拿到flag
要是有题目练一把就更好了
貌似服务器已关了,不能做题了;楼主可以把离线的MISC及二进制、加解密的题和思路发一下供学xi学xi
感觉ctf的题都差不多呢 就比如Web150
去年的题目,好像最后一道逆向,4000还是5000分,其他题目加起来才那么多分...
楼主 web550没有链接地址啊
下载本地的题目
楼主 web550没有链接地址啊
牛逼了,第二题使用more绕不过呀。
好东西啊,学到了不少的技巧
晚点发misc,上班了。。。