lua初探

# PREFACE:一直不会搞 lua 题,稍微整理和学习一下

偷了一些这篇博客来学习学习

# lua 编译:
  • Luac
  • Luajit
# 反编译:

unluac:https://sourceforge.net/projects/unluac/

处理 lua5.0 - lua5.4

java -jar unluac.jar luac.out > 3.lua
java -jar unluac.jar --rawstring luac.out > 3.lua

# 2、LuaDec

https://github.com/viruscamp/luadec

主要针对 lua5.1,对 lua5.2 和 lua5.3 是实验性的 , 依赖 lua 源码

sudo apt-get install libreadline-dev 

git clone https://github.com/viruscamp/luadec
cd luadec
git submodule update --init lua-5.3   # lua5.2 就替换成 lua-5.2 下面也是一样
cd lua-5.3
make linux
cd ../luadec
make LUAVER=5.3

参数介绍

-pn  : 打印函数嵌套结构
-dis : 反汇编luac.out或lua源码  # 这里的反汇编指的是生成字节码
luadec abc.lua 或 luadec  luac.out :  反编译lua源码或luac二进制文件  #这里的反编译指的是生成lua源码

# 工具先放上面,找一个实战的题来看看,这个是 RCTF2022 的 picStore

题目给出的 picStore.bin 是一个 lua 二进制块,原理可以参考这篇:Lua 源码分析(一)二进制块的加载 - 知乎 (zhihu.com)

image-20231109152335694

接着上面 blog 的做了一遍… 懒得写了…