BCTF2018-Web Checkin WriteUp
Checkin WP
毫无疑问,BCTF是我打的第二场极其自闭的比赛
第一个签到题死活做不出来,完全没有思路。直到最后一小时阿霖告诉我有思路了,然后去搭了一波环境结果不行。。。
确实当时最后有点急,现在静下来慢慢写确实写出来了。
顺便:Web是真的坑,简直无底洞一样,临时去学了一波Beego。。。
好在比赛结束后一小时58分钟拿到了flag。。。好歹算是迟到
毫无疑问,BCTF是我打的第二场极其自闭的比赛
第一个签到题死活做不出来,完全没有思路。直到最后一小时阿霖告诉我有思路了,然后去搭了一波环境结果不行。。。
确实当时最后有点急,现在静下来慢慢写确实写出来了。
顺便:Web是真的坑,简直无底洞一样,临时去学了一波Beego。。。
好在比赛结束后一小时58分钟拿到了flag。。。好歹算是迟到
南邮的CTF比赛,Web题做起来感觉还行,比上次LCTF的舒服多了。总体难度还行吧,有些题有小坑。
最后拿了Rank5还算不错感觉。
什么是SSTI
?
SSTI全称Server-Side-Template-Injection
,即服务端模版注入攻击。
攻击成因是服务端模版引擎将用户的输入直接渲染进模版,而未做过滤或者对象关系映射(ORM)
。
这样,攻击者可以控制渲染进模版的内容。通过直接输入模版渲染的关键词例如{{ }}
,即可将恶意代码注入模版中执行。最严重的后果是getshell。
现在有很多常见的模版渲染引擎,而最常用也最长出问题的Web框架就是基于Python的Flask
框架了。
具体SSTI的概念和成因分析此处不再赘述。
由于要肝某个项目,为了快速开发,我又双叒叕上了JQuery
的贼船,毫无意外的踩了一堆坑。现在总结一下顺便Mark。
Express
框架是基于Node.js
的Web框架,由于js的特殊性,Express还在使用Promise
或者原生callback
。
因为Node.js的众多优秀特性例如单线程,异步,事件驱动,使得Express框架异常轻量高效。
现在ES6
使用async
和await
来方便的执行异步语句,使用try{}catch(e){}
来捕捉错误,而Express还在使用Promise
或者原生callback
执行异步操作。这样混合会造成很多隐患。
对于Express框架而言,未捕捉到的错误会直接卡死整个Node进程,造成拒绝服务,不能正确的抛出500错误。
由于Node.js的特殊性,单线程卡死等于整个Node进程死了。更加蛋疼的是,由于Promise,没有catch的会卡在事件循环中,不会正常停止,而会一直拒绝服务。
Mark一下解决方法,这里是路由层的代码。
// handle uncaughtExpection
const Layer = require('express/lib/router/layer');
Object.defineProperty(Layer.prototype, 'handle', {
enumerable: true,
get() {
return this.__handle;
},
set(fn) {
if (fn.length === 4) {
this.__handle = fn;
} else {
this.__handle = (req, res, next) =>
Promise.resolve(fn(req, res, next)).catch(next);
}
},
});
将这段代码加在任意一个路由文件中即可正常的抛出500错误了。
这场CTF可以说打的非常怀疑人生了,上次护网杯还能挖点东西出来,这次可以说是被按在地上摩擦,毫无游戏体验。。。
看了大神的WP才发现还有这么多东西,Web题还能这么玩。。
HTTPS是HTTP的加密协议。使用HTTPS协议可以防止中间人攻击,防止网络流量包被窃听。
讲得简单点,就是可以保护客户端数据在发送至服务器端时的安全性。
同时也可以验证网站服务端的身份。
不仅如此,新一代HTTP/2协议也是建立在HTTPS之上的。想要客户端和服务端使用HTTP/2协议必须使用HTTPS协议进行传输。
更现实的问题是,Chrome已经将所有HTTP协议的站点都标记为了不安全。。。
不如定个小目标?
比如一天写一篇博客?
Docker 最先是跑在 Ubuntu 和 Debian 上的,使用 aufs 存储器。由于 Docker 越来越流行,许多公司希望在 RHEL 上使用,但是上游内核中没有包括 aufs,所以 RHEL 不能使用 aufs。最终开发者们开发了一个新的后端存储引擎 Device Mapper,基于已有的 Device Mapper 技术,并且使 Docker 支持可插拔,现在全世界有很多真实案例在生产环境使用 Device Mapper。
欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!