sctf2019 flag shop

照着wp做

1.png

进入页面,看到uid,flag的价格和现有的JinKela(货币),点work会增加。
进入robots.txt,看到存在文件filebak
2.png

进入该文件发现源码,但是是ruby,8会
看wp,存在erb模板注入。
模板注入和sql注入差不多,都是将提交的字符串当成可执行代码执行了(感觉很多注入都是这也,比如xss)
大概看一下后端代码的逻辑,uid的JinKela被写在了cookie里,并且cookie签名用的是jwt。可能是要伪造cookie了。
首先在https://jwt.io/#debugger-io里面解密一下cookie
3.png

确实写在了cookie里,但是伪造cookie需要知道后端签名的密钥,这里我们并不知道密钥,无法伪造cookie,继续去源码(wp)看看。
4.png

这里存在erb模板注入,存在字数限制。但是源码中可以发现在前面出现了一个对密钥的正则
5.png

于是可以用ruby的预定义字符$对匹配的字符串进行读取,可读取到secret
构造payload:

/work?SECRET=&name=%3c%25%3d%24%27%25%3e&do=%3c%25%3d%24%27%25%3e%20is%20working
6.png

成功拿到secret
伪造cookie


7.png

回到页面,buy flag,抓包将伪造的cookie写进去,在返回的包里拿到新的cookie,解密得到flag


8.png
9.png

推荐阅读更多精彩内容