NewStar新生赛w3wp
本文最后更新于:2023年10月24日 凌晨
NewStar新生赛w3部分wp
$\mathcal{Author:CoolWind}$
Misc
0x01 阳光开朗大男孩
下载附件得到两个文件,secret.txt
中可以看到是一段社会主义核心价值观加密
这里有一个坑点就是密码是s000_h4rd_p4sssw0rdddd
而不是整个一串。
flag.txt
中可以看到是一串emjoy
表情包,可以知道是emoji-aes加密
得到flag。
0x02 大怨种
看到是一个gif,使用kali中的imagemagic
套件中的convert
将其分解
可以得到三张照片,其中包含一张汉信码
然后用汉信码解码网站解码
得到flag。
0x03 滴滴滴
听所给的音频文件可以知道是手机拨号,使用破解脚本dtfm2num
解码可以得到数字密码
因为所给图片是一个jpg
格式,并且有密码,可以联想到steghide
加密,通过密码解密图片可以得到一个txt
文件,flag之道就在其中。
0x04 2-分析
通过题目描述可以知道这是一次rce攻击的流量包,因为要找到攻击路径,所以直接筛选http
包中所有状态码为200
的进行分析,可以找到如下包
一段pear裸文件包含的rce。
追踪http
流看一下可以确定是这个包,找到漏洞文件index.php
以及shell文件wh1t3g0d.php
还有一个用户名没找到,接着筛选可以找到这样一个POST
包,追踪一下http
流
说明用户名是best_admin
。
因此可以得到
根据题目描述进行md5
,即可得到flag。
0x05 键盘侠
拿到的是一组usb流量,因为题目名称是键盘侠,因此找一下键盘流量
发现这组1.15.1
发送的流量很符合,将其过滤然后提取出来存到1.pcapng
中(图为已提取出来的)。
用tshark
将其中的usb
数据提取到一个txt中以便于之后写码提取。
同时根据键盘流量编码表可以写出如下python脚本
1 |
|
可以得到flag文件
Web
0x01 include pear
进入网站看到一句提示说phpinfo
中有东西,进入之后可以看到
让我们检查register_argc_argv
发现是打开的,因此会存在pear
的裸文件包含问题,pear
会将payload
中传入的一个参数作为参数进行调用,可以查看p神的文章学习一下。
通过构造payload
可以将木马文件直接传入,但是要注意因为源码中在include
的时候会自动加上.php
,因此要注意在读取pearcmd.php
的时候后面不要加文件后缀,pearcmd
即可。
传入之后直接蚁剑连接,得到根目录下的flag。
0x02 medium_sql
吸取上次的经验,先用sqlmap来一发,发现有布尔盲注和时间盲注。
兴致勃勃的想直接一把梭,结果发现flag爆不全,最多爆到列名,虽然不能一把梭但是还算是减轻工作量了。
那就只能自己写布尔盲注的脚本
1 |
|
注意需要大写绕过,最终得到flag。
0x03 POP Gadget
php反序列化中的pop链问题,需要利用php类中的魔术方法对其进行调用。
本题中用到的魔术方法如下表:
魔术方法 | 作用情况 |
---|---|
__destruct |
在对象被销毁前(即从内存中清除前)调用这个方法。 |
__toString |
在对象被当做字符串处理的时候调用。 |
__call |
当调用了对象中不存在的变量/方法的时候调用。 |
__invoke |
当对象被作为函数调用的时候调用。 |
__unset |
当在类外删除一个private 属性的时候调用。 |
因此思路是:
- 通过
Begin
中的preg_match
调用Then
中的__toString
- 通过
Then
中的($this->func)()
调用Super
中的__invoke
- 通过
Super
中的$this->obj->getStr()
调用Handle
中的__call
- 通过
Handle
中的$this->obj->end()
调用CTF
中的end()
- 通过
CTF
中的unset
调用WhiteGod
中的__unset
pop链的尾端由于是两个变量拼接使用,因此可以给WhiteGod
的对象中的func
设置为system
,var
设置为你想要使用的参数,进行rce。构造序列化脚本如下:
1 |
|
同时,因为有的变量是private
,因此后面都使用__construct
方法对变量进行赋值。传入构造的序列化
得到flag
0x04 R!!C!!E!!
文件名一定要自己爆而不是无脑相信大佬的话~
启动靶机之后发现是minipop链
+exec
无回显函数,可以考虑rce盲注
。
首先写minipop链
的序列化。
1 |
|
通过实验if [1=1] ;then sleep 3;fi
发现有时延,因此可以进行时间盲注。
写时间盲注脚本
1 |
|
因为不喜欢写函数选择了
try-catch
进行跳循环,大佬请无视
可以爆出根目录的文件
得到文件名flag_is_h3eeere
然后用同样的脚本随便改一改啥的可以爆出flag
不知道为什么大括号不显示,但是不重要,交flag的时候手动加上就行。
0x05 GenShin*
你说的对,但是官解是NewStar官方出的wp
因为没时间做了,这是一道赛后复现题,但是由于官解初版给的payload是错的,我复现了两天。
通过测试可以知道过滤了很多ssti
注入的类,同时过滤了单引号和popen
,可以通过get_flashed_message
加上字符串拼接进行注入。
可以构造payload
1 |
|
直接读取flag。
另附一篇搜到的比较全的flask-ssti注入文章。