2023巅峰极客ezlua
关于lua:https://woaw04.github.io/2024/01/15/lua/
0x00 题目分析一道luajit
涉及有lua虚拟机,lua结构,lua执行流程
使用了ASLR,地址不可信,方法更重要
博客断断续续写了一段时间,所以可能图内的地址对不上,不过方法思路应该是没问题的(
0x01 输入数据的处理进入main函数,翻到最下面,可以找到一个函数:luaL_loadbuffer
此函数需结合luajit2.1的源码进行分析
从lj_load.c中可以找到关于luaL_loadbuffer的定义
此处为了方便观看,我将这三个函数放在一起,并按调用的顺序进行了排列,可以看到,在luajit中,luaL_loadbuffer函数是调用了luaL_loadbufferx函数,而luaL_loadbufferx函数中又调用了lua_loadx函数
这条调用链的作用是载入并编译内存中的一段Lua代码,然后作为一个代码块 (称为chunk)压入栈中。
在lua_loadx函数中变量status有一项为cpparser,其作用是将 Lua 源代码解析为 Lua 函数,并将其保 ...
关于lua以及luajit
学习一下lua及其相关知识
参考:https://wd-2711.tech/2023/08/02/about-lua/#more
0x00 What is lualua简介Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
嵌入式环境使用的脚本语言
lua采用的虚拟机根据指令获取操作数的方式不同,可以把虚拟机分为基于栈的虚拟机和基于寄存器的虚拟机。
JVM与python使用基于栈的虚拟机,该虚拟机是在当前栈中获取和保存操作数。例如:a=b+c,其相应指令为:
1234push bpush caddpop a
其实现起来比较简单,每条指令占用的存储空间也小。但是,对于运算而言(例如加法),这需要4条指令才能完成,这会对效率有很大影响。
Lua目前采用基于寄存器的虚拟机,例如:a=b+c,其相应指令为:
1add a b c
提高了效率。但是,每条指令占用的存储空间也增加了,在编译器设计上也增加了复杂度
lua语言本身类型定义Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以 ...
2023巅峰极客m1_read
复现此题学习一下AES算法、DFA攻击和Frida的食用方法
0x00 AES算法参考:https://zhuanlan.zhihu.com/p/397940508
0x01 DFA攻击参考:https://blog.csdn.net/fenfei331/article/details/126385120
关键:在倒数第一轮列混合和倒数第二轮列混合之间(在AES-128中也就是第8轮和第9轮之间,因为最后第10轮不做列混合),修改此时中间结果的一个字节,会导致最终密文和正确密文有4个字节的不同。通过多次的修改,得到多组错误的密文,然后通过正确密文和这些错误密文能够推算出第10轮的密钥(加密模式下),继而能推算出原始密钥。
实际应用中,需要先找准列混合的函数位置,然后在他之前去插入缺陷数据。
0x02 Frida参考:https://www.52pojie.cn/thread-1128884-1-1.html
就是用来HOOK的(
0x03 题目分析先上Findcrypt,可以找到AES的S盒,但是没有调用的地方
函数不多,一个个找可以找到类似AES的函数
函数结尾有AES-128的 ...
栢鹭杯2023RE
第一次遇到AVX指令集的题目,感觉比较有意思记录一下
了解VPSHUFB指令重点是这个说明书
https://www.felixcloutier.com/x86/pshufb
里面介绍了AVX指令集中vpshufb的使用方法(左上Index可以看到所有指令)
当然最重要的部分我先放这了:
1PSHUFB performs in-place shuffles of bytes in the destination operand (the first operand) according to the shuffle control mask in the source operand (the second operand).
即
1PSHUFB 以第二个操作数为shuffle控制掩码将目标操作数(第一个操作数)中执行以字节为单位的shuffle。该指令排列目标操作数中的数据,使随机掩码不受影响。
那么问题来了
shuffle是什么?
直译是洗牌,当然也有随机播放、改组的意思
在这个地方,我觉得可以理解为“重组”
即将操作数依据某个掩码(mask)进行“重组”操作
因此,我们可以 ...
最小PE文件的制作
战前准备要制作最小PE文件,那么需要知道哪些字段可以删,哪些字段不能删,而哪些字段需要修改
首先,需要知道哪些字段可以删除/修改,即对这个字段进行任何操作都不会影响程序的运行
下图将所有可删的字段全部改为了1,由于010editor的特性,这里将会显示为橙色
当然,要缩小PE文件绝不止是将这些橙色部分进行修改,下面的数据节、引入函数节等都需要修改
值得注意的是,由于修改PE文件会涉及RVA和FA的修改,如果每一步都进行这些修改,虽然会使得更改过程更加清晰,但是效率将会大大降低,所以作为马后炮,我在这里先将RVA和FA的修改按下不表,将大致过程结束之后在进行RVA和FA的统一更改
第一步删除DOS桩和MZ签名部分
MZ签名最重要的就是前两个字节,其余都可以删除,但是需要注意的是,003CH处用于定位NT映像头开始的位置,当NT映像头的位置改变时,这个地方也需要做出变化
如下图所示,是删掉上图所示一些部分的结果(注意观察左边的地址)
为什么不删除MZ签名后的两个字节呢?这就需要注意观察刚才所说的003CH位置了,删去部分MZ文件头和DOS桩后,003CH的位置将会被NT映 ...
Wireshark协议分析
常见协议包ARP协议
ICMP协议
TCP协议
HTTP协议
UDP协议
(OICQ及DNS都是基于UDP的传输层上的协议,因此在过滤器中输入UDP会出来OICQ和DNS两种协议)
DNS协议
(客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可,不用经过三次握手。这样DNS服务器负载更低,响应更快。理论上说。客户端也可以指向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候仅支持UDP查询包)
常用协议分析协议分析时通常关闭混淆模式,避免一些干扰数据包的存在
ARP协议1地址解析协议(Address Resolution Protocol)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址的(将IP地址解析为MAC地址)。
产生ARP数据包开始抓包——过滤ARP
使用nmap来基于ARP协议进行扫描
1nmap -sn (Gateway)
扫描结果
Boardcast为第一个包:kali(VM虚拟机)发送广播包“who has 192.168.6.2? Te ...
WireShark学习笔记
抓包原理:网络原理:哪种情况能抓到包本机(主机)环境——直接抓包本机网卡进出流量
wireshark抓电脑本机的包
(仅抓电脑接收到的包)
集线器环境——流量防洪,同一冲突域(理论分析)
PC1/PC2发送数据包到集线器网络内(冲突域/广播域)
集线器将接收到的包往源外的所有端口放洪
wireshark可抓同一个集线器从其他端口接收到的数据包
(抓局域网内的整网的包)
交换机环境:①端口镜像;②ARP欺骗;③MAC泛洪①端口镜像
虽然图与集线器环境的很类似,但是原理大不相同:在交换器中PC2和PC3通信时PC1抓不到包
但是PC1可以通过做一个策略(端口镜像SPAN)来将PC2和PC3通信时的包复制到PC1上
COPY其他端口到一个特定端口
(中大型网络会用,为正规做法)
②ARP欺骗
没有权限在交换机上做端口镜像但是想获取整个局域网的流量
通过ARP攻击软件Cain&Abel进行ARP欺骗(ARP病毒)
1234地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一个TCP/IP协议。主机发送 ...
YCrCb
似乎是寒假做任务时候遇到的比较有意思的一道题
搜了一下原题是dasctf的隐写《YUSA的小秘密》
这题给出的最直接提示就是YCBCr(不懂
遂直接去搜索YCrCb的意思
1YCrCb即YUV,主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
——百度百科
好像懂了又好像没懂
找一找类似的题目
得到一份By ...