绿盟杯Web部分Writeup

2017-07-26 09:38:06 16 14988
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/
查看源文件获取到源码
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不等于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环境都没弄好。。。

关于作者

whitecap10020篇文章115篇回复

whitecap100

评论16次

要评论?请先  登录  或  注册