记一次LUA逻辑查错:查看LUA函数闭包内变量状态

今天好不容易偶然重现了一个渲染队列总是跳过一个渲染元素的问题,这问题一直存在但是却一直无法稳定重现。 拿到环境后开始分析问题,首先要知道这个对象有没有进渲染队列,可是渲染队列在导出接口的闭包内外界无法访问。 立马想到debug库,利用多次调用debug.getupvalue层层进入闭包,最终成功拿到了队列数据,发现对象在队列中,从而定位问题出在分帧渲染逻辑,跳转到响应代码位置问题迎刃而解。 local function getupval(f, k) local i = 1 while true do local n, v = debug.getupvalu...

意外发现 Lua5.1 字符串解析有点问题

今天顺手写个汉字转拼音的脚本,意外发现有个字会导致产生语法错误: print("乗") 稍微多试了几次,发现这么写反而没有错误: print("乗"") 这个汉字实际上是导致 Lua loadstring 函数判断结束的引号出了问题,误以为字符串还没有结束,具体原因得有空追一下 Lua 的源码才知道。只是觉得如果谁使用 Lua 用作服务器脚本处理语言,用户可以利用这个字符,在读写用户数据的时候进行注入攻击。 后续 断点跟踪看了下, Lua 在处理字符串转义时的函数是按照 ASCII 值按位转义的。 static void addquoted (lua_State *L, luaL_Buf...

记一次 Typecho 插件的 XSS 攻击

发现 咸鱼好久没有更新内容,于是昨天想着来记录下最近的事情,结果上来发现网站页脚出现了奇怪的友链,于是登录进后台,元素审查一看,居然有人给我插了一条 XSS 进去了…… 再一看网络记录,可以,我的 cookie 已经被上传了…… 赶紧把 token 改了,然后临时把管理页删了…… 溯源 搞完在思考,为什么这里会有这么严重的问题。首先回到友链插件上,没想到这个作者居然显示文字的时候没有做任何安全性字符过滤,导致了 xss 的可能。 但是为何数据会出现在我的库里呢?想来想去没想通,于是顺手看了下友链插件的提交数据,然后把表单复制出来,去除 cookie 信息后从控制台直接 curl 提交...

使用Python制作繁体显示的简体字体文件

最近几天发生了一些事情,导致《剑网3免费版》(台服)关服,于是昨天突发奇想,是不是想办法修改字体文件,就可以在简体客户端里面显示出繁体呢。 思绪 得到这个想法后,我便顺手拿出一个字体文件,阅读起了TTF文件的数据结构,随手谷歌了一篇文章,大致了解到TTF文件由矢量图形表(Glyphs)、字符到矢量图的映射表 (cmap)、矩阵样式等信息表 (hmtx、hdmx、OS/2 等)构成,与想象中设计基本一致。那么我们要做的事情,就是通过一份繁简转换表,从一个繁体字体文件中读取每一个繁体字符的矢量图、矩阵样式信息、字符映射表,并修改其映射关系到对应的简体字符,然后替换或者追加到简体字体文件对...

通过 JavaScript 脚本解决移动端弹出层滚动穿透的问题

前端开发中经常会遇到一个麻烦的问题:在通过fixed或者absolute定位的弹出层上进行滚动操作的时候,滚动事件会穿透到底部导致body跟着滚动,及其影响交互体验。常规做法是在弹出层时候禁止body的滚动,将其设置为overflow: hidden,但是会导致滚动高度丢失从而造成视觉上一次弹动,所以我决定从弹出层本身考虑这个问题。 <body> Body content. <div id="popup" style="position: fixed; top: 0; right: 0; left: 0; bottom: 0"> Popup lay...

Install pydio cells with docker on CentOS 7.

Recently, I've tried several types of self-hosted cloud services. Today, I'll share you about how to set up a pydio cells server. Install According to official docs, to set up your personal secured pydio, you need two things. Docker installed. A valid ssl certificate, for safety. Assume that yo...

最新文章

最近回复