nginx+lua+ngx_lua_waf实现waf功能
用途:
防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传1.下载并解压luajit 2.0.5wget http://luajit.org/download/LuaJIT-2.0.5.tar.gztar -zxvf LuaJIT-2.0.5.tar.gzcd LuaJIT-2.0.5make install PREFIX=/data/luajit(选自己的目录)2.软连接ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.23.下载并解压ngx_devel_kitwget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gztar -zxvf v0.3.0.tar.gz4.下载并解压lua-nginx-mo ...
Linux 下 lua 开发环境安装及安装 luafilesystem
火云邪神语录:天下武功,无坚不破,唯快不破!Nginx 的看家本领就是速度,Lua 的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。
最近一直再折腾这个,干脆就稍微整理下。以防后面继续跳坑!
安装:
1.先安装 lua 的相关依赖安装 C 开发环境由于 gcc 包需要依赖 binutils 和 cpp 包,另外 make 包也是在编译中常用的,所以一共需要 9 个包来完成安装,因此我们只需要执行 9 条指令即可:
12345678910gcc:命令未找到(解决方法)yum install cppyum install binutilsyum install glibcyum install glibc-kernheadersyum install glibc-commonyum install glibc-develyum install gccyum install makeyum install readline-devel
2.安装 lua5.1.5下载地址:http://www.lua.org/ftp/
123456789101112131415161718192 ...
lua基础学习
lua基础学习
lua数据类型八大基本数据类型nil(空),boolean(布尔),number(数字),string(字符串),userdata(自定义类型),function(函数),thread(线程),table(表)
lua与C++交互
lua_State状态机lua_State主要是管理一个lua虚拟机的执行环境, 一个lua虚拟机可以有多个执行环境。Lua虚拟机通过维护这样一个虚拟栈来实现两种之间的通信,lua_State定义如下:1234567891011121314151617181920212223struct { CommonHeader; lu_byte status; StkId top; global_State *l_G; CallInfo *ci; /* call info for current function */ const Instruction *oldpc; /* last pc traced */ StkId stack_last; /* last free slot in the stack */ StkId ...
基于COM组件接口ICMLuaUtil的BypassUAC
lfish
提权原理
COM提升名称(COM Elevation Moniker)技术允许运行在用户账户控制下的应用程序用提升权限的方法来激活COM类,以提升COM接口权限。同时,ICMLuaUtil接口提供了ShellExec方法来执行命令,创建指定进程。
因此,我们可以利用COM提升名称来对ICMLuaUtil接口提权,之后通过接口调用ShellExec方法来创建指定进程,实现BypassUAC。
实现思路
和之前常规调用COM组件接口的方式有所不同。在初始化COM环境之后,必须通过CoCreateInstanceAsAdmin函数来创建COM类才能使用权限提升COM类的程序。(具体操作看代码演示)
通过上述方法创建并激活ICMLuaUtil接口后,直接调用ShellExec方法来创建指定进程,实现BypassUAC。
注意,如果执行COM提升名称代码的程序身份是不可信的,还是会触发UAC弹窗;若是可信程序,则不会触发UAC弹窗。因此,必须使这段代码在WIndows可信程序中运行。可信程序有计算器、记事本、资源管理器、rundll32.exe等。可以通过DLL注入或是劫持技术,将这 ...
Redis Lua脚本中学教程(上)
失踪人口回来啦!
有读者问我为什么这么久都没有出Redis Lua中学教程,表示村头厕所已经好久没有纸了。其实我早就要写这篇中学教程了,奈何最近太忙了,就一拖再拖,直到今天我终于又开始动笔了。忘记Lua相关概念的同学可以先回顾一下小学教程。
中学教程主要分为两部分:Redis Lua的相关命令详解和Lua的语法介绍。
前面我们简单介绍了EVAL和EVALSHA命令。但是只有那点只是是没办法从中学毕业的,因此我们需要进行更深入的学习。
EVAL最早可用版本:2.6.0
用法:EVAL script numkeys key [key …] arg [arg …]
关于用法我们已经演示过了,其中第一个参数是要执行的Lua脚本,第二个参数是传入脚本的参数个数。后面则是参数的key数组和value数组。
在Lua中执行Redis命令的方法我们也介绍过,就是使用redis.call()和redis.pcall()两个函数。它们之间唯一的不同就是当Redis命令执行错误时,redis.call()会抛出这个错误,使EVAL命令抛出错误,而redis.pcall()会捕获这个错误,并返回Lua的错误表 ...
Lua Table增删排序
谨慎使用 table[index]=nil 删除某索引下的值,原table其他隐藏索引编号不会发生改变!且这种方法会导致索引产生空缺不连续,也会影响ipairs方法的遍历,pairs方法不受影响
t = {
1,
2,
3
}
–插入函数(table,位置(可选),值)
table.insert(t,1,10)
table.insert(t,'r')
–删除函数(table,位置(可选))
table.remove(t,2)
table.remove(t) – 不写位置默认删除最末一位
t[2]=nil – 删除该索引下的值,但是!原table其他隐藏索引不会改变!
–排序(table,排序规则(可选),默认正序)
– 正序排序
table.sort(t)
–倒序排序
local function my_sort(x,y)
– body
if x > y then
return true
else
return false
end
end
table.sort(t,my_sort)
for k,v in pairs(t) do
prin ...
cocos2dx lua 常见命令行(编译调试运行打包)
cocos 命令
Cocos2d-x 带有一个命令行工具:cocos 这是一个跨平台的工具,你可以用它创建项目、运行项目、发布项目。
命令行工具适用于所有 Cocos2d-x 支持的平台,包括:iOS、Android、Mac、Linux、Windows、Web。不用 IDE,只用命令行,你就能完成所有的工作!
本文选自cocos2dx官方文档,只做记录!
项目创建使用 cocos new 命令创建新项目,命令格式如下:
cocos new <game name> -p <package identifier> -l <language> -d <location>
示例:
cocos new MyGame -p com.MyCompany.MyGame -l cpp -d ~/MyCompany
cocos new MyGame -p com.MyCompany.MyGame -l lua -d ~/MyCompany
cocos new MyGame -p com.MyCompany.MyGame -l js -d ~/ ...
Lua学习笔记(一)
基本语法
交互式编程
脚本式编程
注释
单行注释
多行注释
标识符
关键词
全局变量
数据类型
nil
bool
number
string
table
function
thread
userdata
基本语法交互式编程所谓的交互式编程的意思,其实就是在命令行中输入程序就可以立即查看效果。
脚本式编程将Lua代码保持在.lua文件中执行。
两种编程方式下的简单的helloword程序:
注释单行注释两个减号。
1--
多行注释这个东西有点儿小奇怪,习惯了就没问题了。
1234--[[ 多行注释 多行注释 --]]
总的:
12345print("helloword")--print("helloworld")--[[print("helloworld")--]]
标识符标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua ...
Lua 学习 chapter12
目录
日期和时间
日期和时间的处理
What is the cost of lies? It’s not that we’ll mistake them for the truth. The real danger is that if we hear enough lies, then we no longer recognize the truth at all. What can we do then? What else is left but to abandon even the hope of truth and content ourselves instaed with stories? In these stories, it doesn’t matter who the heroes are. All we want to know is: who is to blame? No friends. Or, at least, not important ones.
日期和时间
在lua中日期的表示分为两种方式,一种是一个整数,从1970年以来一 ...
结合Fluentd实现ngx_lua_waf页面展示
0x00 概述最近在看lua_waf,看看怎么搞个web界面出来,于是有了这篇笔记。
上图是大佬分享的waf日志处理流程,不过我这篇文章讲的就简单多了,如下, 纯属搞着玩儿:
ngx_lua_waf简介
ngx_lua_waf,是一个轻量级、高性能的WAF模块。
防止sql注入,本地包含,部分溢出,fuzzing测试,XSS, SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传
详情(安装方法)见:https://github.com/loveshell/ngx_lua_waf
Fluentd简介
Fluentd,是一个开源收集事件和日志系统,它目前提供150+扩展插件让你存储大数据用于日志搜索,数据分析和存储。这里我们用fluentd搜集lua_waf日志。
官网:http://www.fluentd.org/
文档中心:http://docs.fluentd.org/v0.12/articles/quicksta ...