avatar
标签
65
分类
3

首页
文章
往逝
关于
虚空之地
首页
文章
往逝
关于

虚空之地

Log4j2漏洞后的反思
发表于2021-12-13|感悟
我并不是专门搞安全的,这里的安全泛指网络安全,不自作孽的话,离线情况一般不存在安全问题,而我知道这件事还是因为学校对信管部的通知,不知为何我就想了解一下,真就这么离谱,一个日志都可以被骇入。我先简单整理一下这个漏洞是怎么产生的,这个漏洞产生在使用了Log4j2日志的服务器,但影响版本有一定范围,有log4j2版本和JDK版本,依据攻击方式各不相同。其中常见的攻击方式是,针对log4j2提供的Lookups模块,该模块可以执行“${}”对应的符合一定格式的语句,一般对于信息输出,无关紧要,更致命的是它内部没有对参数分开处理的情况下还提供了Jndi的功能,一般情况下我们采用占位符输出,像这样Log.info("name:{}",username),为了输出能力更强,log4j2提供了可执行输出username="${java:os}"这是lookups的java模块 真正危险的是下面这个功能 虽说官方说使用在配置文件里,但从底层实现可以发现,使用如上的Log.info也会执行相应代码,而且对 ...
lua通读之杂项
发表于2021-12-08|计算机
经历了一番波折,我们终于来到了lua的最后阶段——杂项总结了,lua的整个体系我们已经有了一个较为详细的了解,本来可以讲讲与lua相关的库,但这样的东西几乎在哪门语言都是近乎无限的,而且优秀的工具往往介绍的人多,官方文档又好,再说一遍有点过于累赘了,而对于比较冷门的,如果没必要,还真没有学习的必要。那么我到底要说些什么呢?听我一一道来吧。 lua反汇编反编译是一个十分庞大的体系,一般都是建立在对编译器了解十分深刻的情况下,但进行黑箱实验也是可以的。所谓的反编译实际有两个部分,首先是反汇编,即将二进制文件转换为汇编代码,其次是还原源代码,即将汇编代码转换为高级语言代码。理论上来说,前半部分是绝对精准的,而后半部分是部分不可能的,这部分主要指的是源代码完全一致,这和编译器优化和两种语言的体系不同有关,比如在C语言下,宏基本不可能还原,还有在函数内部的局部变量,即栈变量,名称是会被优化掉的,而且可以编译为二进制可执行文件的还不止是C语言,go也是可以的。而反汇编实际是将序列化的数据反序列化的过程,故绝对精准的。lua本身有解释性语言的特性,程序就是源码,对于这种没有任何反编译的需要,我们主要 ...
lua通读之Debug机制
发表于2021-12-07|计算机
简介调试(Debug)对于大部分程序员来说并不陌生,我们接下来主要要讲的是动态调试。当然我们大多时候,使用的调试工具都是基于我们图形界面的IED,但实际上调试的一些关键的东西也是可以在命令行下完成,这就是我们要讲的lua调试机制。 lua的基本调试apilua有关调试的接口都在debug库里,但我们不会全都讲,因为有些特性繁琐又用处不大,比如debug.getfenv,所谓的函数环境。 断点功能lua的原生环境没有图形界面,所以我们不可能直接在脚本的某行直接打断点。但我们应该了解断点的本质是什么,实际上是hook,俗称钩子。我们从C语言的动态库链接简单地来理解一下。 1234567891011121314//test.cint add(int a,int b) { return a+b;}//hook.c#include <stdio.h> int add(int,int); int main() { int res = add(1,3); printf("%d\n",res);} ...
神奇的比特存储
发表于2021-12-05|计算机
两个算法题号码去查重现在有两批QQ号,每批大约40亿个,每批可能存在重复的数据,但记录着不同的数据,我们有两个iterator,都可以通过iterator.nextuint获得下一个QQ号,数据类型为unsigned int,即每个QQ好最大不超过2^32-1[当然目前我所见过的QQ号,连30亿都没超过],现在设计算法,使用内存不超过1G,找出两批QQ号公共QQ号的个数?这个问题有许多衍生,但我们选取了最简单的一部分。我也不卖关子,直接说算法了,这题的关键在于QQ号是有序的,同时我们只关心是否有这个QQ号,虽然可以使用bool数组,但在C里它占用一个字节,不能充分利用空间,我们需要的是用bit(一个二进制位)来存储bool,这样才能最大限度的利用空间。同时QQ号是有序的,于是我们可以通过内存地址上的排序来映射相应QQ号的位置。我们举一个简单例子来说明,比如一个char总共有8个二进制位,比如00001010则表示2和4存在,其它不存在。进一步char[2]则有16个二进制位,01000000 00100010则表示2,6,15存在,其它不存在。然后我们需要判断的QQ号的最大值为2^32 ...
比起哲学,我更爱数学
发表于2021-12-03|感悟
今天闲着无聊,听了听马原的课。在讲真理与谬误的对立和统一,说什么真理和谬误在一定条件下可以相互转化之类的,还问我们怎么理解,在日常生活中有些什么实例。知道我首先想到了什么吗?是哥德尔不完备定理,我不想详细的述说它,这是数学家的工作,它大概讲了这样两个事实,包含某些公理的一致逻辑系统是不完备的和在此系统内不完备性还不可自证。我可以不知道什么是真理,什么是谬误,本身就模糊的东西,就是用来感受的,但我知道什么是真命题和假命题。我不理解真理与谬误的对立和统一,但我知道满足非真即假的逻辑系统里有可能存在不可判断真假的命题。我不知道真理与谬误在什么条件下可以相互转化,但我知道在不同公理系统下的定理是不一样的。为什么我要说这些?其实我想表达的是,与别人争论大道理的非必要性,当然说服与政治需求是另外一回事。其实每个人都知道争论真假的非必要性,注意这里我没说辩论,因为辩论的主要目的是让评委更偏袒自己,但人却总有说服对方的冲动。虽然我们都有中立的判断,但终究需要选择。就跟有时,我们可以述说大段大段关于是否扶老人的话题,但最后在现实里还是得做出是否扶老人的选择,这就是表态。马原有几个有趣的地方,一个是强调实 ...
lua通读之GC机制
发表于2021-11-23|计算机
垃圾回收概述需求如果我们只是写一个如“Hello World”这般简单的程序话,垃圾回收本身就不是我们该考虑的问题,实际上,我们的程序是运行在操作系统上,当程序运行结束后,操作系统会自动回收所有程序使用的内存,也就是说,不是一直长时间运行的程序没有考虑垃圾回收的必要。同时,除了C和C++以外几乎所有语言都有垃圾回收机制,我们需要注意的是这里的垃圾回收本质指的是自动内存管理机制。C/C++有相应的内存管理接口,但需要手动。而其它大部分语言没有提供内存管理接口,都是自动管理,就是我们通常所说的拥有垃圾回收机制。虽然我们可以使用更多拥有良好GC机制的语言进行高效编程,但C/C++可以说是所有高级语言的老祖宗了,大部分语言的解释器都依赖与C/C++实现,其实C才比较正确,C++提供面向对象的特性,同时提供了析构函数用于自动回收对象,注意是对象,对象里的数据则通过编写析构函数来回收。 学习GC原理不论我们学习多少语言,会发现它们都提供了与C/C++交互的机制,或载入C/C++库的机制,比如java的jni,目的都说是提高效率。总之,我们终会使用C/C++,所以了解一些垃圾回收的方式还是有必要 ...
lua通读之协程
发表于2021-11-17|计算机
协程的基本用法前言协程是lua十分有趣的一部分,它并非多线程,而是单线程,用法有点goto,但有本质区别。但我们需要注意这属于脚本动态语言,静态语言没有,也没有需要这种功能的必要。 含义协程是一段代码的封装,一般通过一个“线程”将代码包装起来,其特点是可以中途挂起(yield)和恢复(resume)。不过在lua的线程与一般语言的线程不太一样。 协程状态对于一个协程有四种状态,‘running’协程正在运行,‘suspended’协程处于挂起状态,‘normal’协程处于唤起另一个协程的状态中,‘dead’协程运行完毕。由‘normal’我们就可以知道,lua程序运行时,只能有一个协程处于‘running’状态,由‘dead’我们可以知道,一个协程只能运行一次。 lua里的使用在lua里,协程的主要库函数有三个coroutine.create(f),coroutine.yield (···)和coroutine.resume (co [, val1, ···])。 coroutine.create用于创建一个协程,传入一个函数用于封装代码,其返回值是一个协程引用,使用type的输出是t ...
lua通读之lua源码分析
发表于2021-11-10|计算机
前言终于来到我盼望已久的源码阅读了,但我又开始思考一个我经常问的问题,源码该怎么读?是否要全读一遍呢?比如我们的lua是一个类编译器,有必要去读大家都学过的词法分析和句法分析部分吗?读源码要从入口函数main开始吗?读源码更重要的是读出思想,如果不懂得几种程序的设计模式没有摆脱以往的思想,你会发现java源码,怎么也读不懂,甚至会觉得莫名其妙。实际上理解设计模式的好处,就能体会更加高效的编程,这才是我们学习的目的。读源码,我们首先应该去读程序所定义的数据结构,在C语言里是struct,而java等面向对象的语言里就是class。在如今模块化的编程时代,我们大部分都有一直面向对象的编程思想,在我看来这是一种优秀的数据组织形式,它将大部分的实体与相应操作全都封装了,对于先整体后局部读源码有许多便利之处。多说无益,我们直接开始lua的源码之旅吧。 lua解释器我们先来看看官方程序是如何利用lua虚拟机实现解释器的。 main函数lua的入口函数长这样 lua.c123456789101112131415int main (int argc, char **argv) { int ...
lua通读之lua的基本使用
发表于2021-11-08|计算机
前言lua是我最喜欢的脚本语言,没有之一。主要还是它轻巧,并包含了程序设计最基本的内容,而且基本没有多余的扩展库,也致使了它强大的扩展性。虽然我最早接触lua是学习cocos2dx游戏引擎的时候,但我却对它终身难望。不过如今的时代,lua或许已经无法满足如今快速开发的时代需求了,cocos2dx的原生版本也因无法高效地开发3A大作而永远定格在了4.0。但想起以前使用lua的日子,我决定写下这个系列,以此纪念当初研究技术的时光。 基本的开发环境Ubuntu20.04,Android7.1.1+Termux,lua5.1 关于使用lua5.1的说明: 首先5.1是lua的一次大变革版本,其次许多扩展都基于此版本,最后后来版本的变化不大。 lua的基本内容下载lua5.1.5源码,然后直接make编译,我们可以得到一下核心文件: 123456#lua的头文件,用于嵌入开发lua.h lauxlib.h lualib.h luaconfig.h#lua运行的基本动态库liblua51.so#lua的主程序lua luac lua用于直接解释lua脚本,luac用于将lua脚本编译为在 ...
我的前方是什么?
发表于2021-11-04|感悟
最近做了一次通识课的作业,不知为何深有感触,感觉做为第一篇文章在合适不过了,先把文章放出来: 不是自诩,我确实读了不少书。但忘了多少,又留了多少,连我自己也不能确定。有时自己或许就是抱着提高自己文学素养的崇高目的,但到头来却是打发无聊的读书时间。在中学的教室里,桌上当然只能放书了。所以我不懂什么就是鉴赏,该如何鉴赏。最近几天我知道了一部叫《当代英雄》的小说,知道了一个叫毕巧林的人。或许我理解与原作者表达的不同,但有一句话确实触动到我了。“我肯定负有崇高的使命,因为我感觉到心灵里充满了使不完的力量,但我不知道这使命是什么。”抛开文章历史背景与文章结构,毕竟我们不是做鉴赏的嘛,而我想说的是感悟。学校里总有一些类似就业指导中心的人会打电话来问你,有一些问题比较引起我的注意。“你为什么选这个学校?”“你为什么选这个专业?”“你对这个学校(专业)了解吗?”虽然心里很想说这还需要理由吗?但还是可以假假的扯一大堆,属时有些奇怪。但其实这些都还好,让我觉得难回答的是,“你以后想干什么?”其是考研,就业之类的都可以说。但我只想说不清楚,有时他们还会问了不了解现状和前景,我说不清楚。综合考虑的话,他们会说 ...
1…89
avatar
逯晓零
我喜欢简洁,仅此而已。
标签
65
分类
3
最新文章
浮躁时代所缺之物2025-08-31
行走于深渊的独木桥上2025-07-31
在花开路上2025-06-30
分类
  • 感悟16
  • 理学16
  • 计算机25
标签
Python VPN Web galgame lua 二进制 代数 代理 体会 余生 信息 内存 写实 几何 合集 哲学 存在 学习 安全 完备性 完美 定理 尝鲜 尺规作图 工具 库 应用 建模 引擎 心态 心情 感受 故事 数学 整理 文学 文论 文集 方程 无理数
©2020 - 2025 By 逯晓零
框架 Hexo|主题 Butterfly