RUBY ERB模板注入
题目:
[SCTF2019]Flag Shop
robots.txt出现hint
关键代码:
if params[:do] == "#{params[:name][0,7]} is working" then
auth["jkl"] = auth["jkl"].to_i + SecureRandom.random_number(10)
auth = JWT.encode auth,ENV["SECRET"] , 'HS256'
cookies[:auth] = auth
ERB::new("<script>alert('#{params[:name][0,7]} working successfully!')</script>").result
end
end
如果传入的参数do和name一致,则会输出params[:name][0,7]} working successfully!
构造do=<%=$'%> is working和name=<%=$'%>
,把里面内容转成十六进制
得到的secret需要jwt解密,但是我没有明白里面的uid应该是什么。。。
之后访问buy flag,抓包
修改cookie,jkl要到可以buy flag 的值
会出现新的cookie
jwt解密之后得到flag
明天需要对这部分知识仔细研究一下。。。
可参考文章.