ibiubcsevfuqbeksesgfvyukb

This commit is contained in:
Victor Tabary 2024-06-26 16:39:25 +02:00
parent cfa0da2bcc
commit d4dfab0704
2 changed files with 32 additions and 8 deletions

23
src/clear_globals.lua Normal file
View File

@ -0,0 +1,23 @@
local clear = {}
function table_contains(tbl, x)
found = false
for _, v in pairs(tbl) do
if v == x then
found = true
end
end
return found
end
WHITELIST = {"_G", "WHITELIST", "clearAllGlobals", "print", "k",
"v", "pairs", "table_contains", "string", "table",
"tonumber", "tostring", "type", "f"}
function clear.clearAllGlobals()
for k, v in pairs(_G) do
if not table_contains(WHITELIST, tostring(k)) then _G[k] = nil end;
end
end
return clear

View File

@ -624,20 +624,19 @@ int do_something()
: "cc");
}
return x+y;
}
return x+y;
}
}
#define C_FUNCTIONS_N 10
struct global_var_t {
char input_buffer[LUA_MAXINPUT];
int (*c_functions[C_FUNCTIONS_N]) (void);
char input_buffer[LUA_MAXINPUT];
int (*c_functions[C_FUNCTIONS_N]) (void);
} global = {{},{random_digit,get_time,do_something,0,0,0,0,0,0,0}};
static int pushline(lua_State *L, int firstline)
{
write_prompt(L, firstline);
if (fgets(global.input_buffer, LUA_MAXINPUT, stdin)) {
size_t len = strlen(global.input_buffer);
@ -672,13 +671,13 @@ const char *lua = "local ffi = require(\"ffi\")\n"
"ffi.cdef[[\n"
"int call_c_function(int);\n"
"]]\n"
"f = ffi.C.call_c_function\n";
"f = ffi.C.call_c_function\n"
"local clear = require(\"clear_globals\")\n"
"clear.clearAllGlobals()\n";
char flag[0x40] = {0};
FILE *flagfile;
int main(int argc, char **argv)
{
flagfile = popen("/bin/get_flag", "r");
@ -701,6 +700,8 @@ int main(int argc, char **argv)
printf("err: %s\n", lua_tostring(L, -1));
}
smain.argc = argc;
smain.argv = argv;