0ctf2017 web题目总结

前言

周末没来得及好好做做0ctf,现在整理学习一下~~

complicated xss

题目介绍

有两个网站,government.vipadmin.government.vip:8000

漏洞也有两个:

  • government.vip xss 没防护
  • admin.government.vip:8000网站cookie中的username可以xss。有个sandbox防护~

最终需要有admin权限上传shell~

设置子域cookie

根据上面两个漏洞,可以得到大致思路:通过government.vip网站,设置admin.government.vip:8000中的usernamecookie(里面是我们构造好的Payload)。然后,让管理员转到admin.government.vip:8000触发XSS获取信息。

初步Payload为:

test.js中尝试获取cookie:

成功获取数据,证明思路正确:

由于管理员的sessionid设置为了HttpOnly,因此需要CSRF帮助~

绕过sandbox执行ajax

admin.government.vip:8000使用delete删除了一些函数,其中就有ajax~

学习到了新的知识,用如下方式即可绕过:

于是构造ajax,来读读admin的页面源码~

再次构造payload发送:

test.js内容为:

成功获取管理员页面代码:

CSRF上传shell

使用FormData配合ajax上传,本地测试好后,得到test.js的Payload:

配合第一步的Payload:

成功获取flag:

小结

学习到两个关键点:

  • JavaScript 跨域设置Cookie ~~
  • iframe 绕过 delete 函数 ~~

0x02 Temmo's Tiny Shop

条件竞争买HINT

用不同的浏览器,用相同账户登录一下,获得几个不同已经登录了的session~ 然后使用一个线程不停买,一个不停卖来赚钱~

脚本如下:

Order by 盲注

使用like匹配:

还可以regexp正则匹配~

找到个好说明:http://blog.csdn.net/my2010sam/article/details/19109235

最后,Payload还有长度限制~~ 而且字符中还有下划线_这个通配符~ 还是使用ascii的整数值来匹配~ 看着思路,都调了半天:

脚本为:

KoG

这个题目的js文件太长了~ 搜索下注释,得到一个emscripten的工具。
它能够把C/C++编译生成的llvm二进制代码,转化为javascript执行~
所以js代码中有很多mallocstrlen这些C语言相似的函数名~

只能慢慢调试了,发现HEAPU8里面存储着我们的输入数据和程序输出数据。

观察HEAPU8[5251100]变化,定位到functionn.js8073行和8075行,两个函数:

找到一个判断函数,定位到functionn.js16758行:

输入Payload后,强行把$1改为false~ 调试发现没有用~~

于是又找到个if判断,在7634行:

$13强行改为true,也不行,还要找~~

在7699行,还有个:

强行把lable改为0,接着跑下去,成功了~

于是乎,注释掉最后两个判读语句的代码(7634行和7699行)~下载到本地跑一跑,输出hash和time,进行注入攻击。


总结

学到了很多关于前端的知识,JavaScript和XSS相关的知识确实很有意思。